전체 글 85

2292번 벌집

문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다.    1 1개  (1번째 = 1개 지남)2~7 6개  (2번째 = 2개 지남)8~19 12개  (3번째 = 3개 지남)20~37 18개38~61 24개첫 번째를 제외하고 한 껍질?씩 이동할 때마다 6씩 늘어난다.  #include int main(){ std::ios_base::sync_with_s..

백준 2024.07.30

2745번 진법 변환

문제B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 1. A~Z는 문자이므로 을 include 해주고 문자를 입력받게 한다.2. ex) 1546(3) = (6*3^0) + (4*3^1) + (5*3^2) + (1*3^3)3. 진법을 string으로 입력받으니 0~9 경우에는 아스키 값 '0'을 빼주어 정수 0~9로 계산되게 한다.4. 제곱 수를 구하는 pow 함수 이용을 위해 를 include 해준다. #include #include #include int main() { ..

백준 2024.07.21

ALU와 제어장치

CPU 내부에는 ALU, 레지스터, 제어장치가 있다.ALU: CPU 내부에서 계산하는 장치제어장치: CPU 내부에서 제어 신호를 발생시키고 명령어를 해석하는 장치 ALU계산을 하기 위해서는 피연산자와 수행할 연산이 필요하다. ALU는 레지스터로부터 피연산자를 받아들이고 제어장치로부터 제어 신호를 받아들인다. 결과값은 레지스터에 전달한다.결과값을 메모리가 아닌 레지스터에 전달하는 이유는 CPU가 메모리에 접근하는 것보다 레지스터에 접근하기 더 빠르기 때문이다. 레지스터는 CPU의 내부에 있기 때문이다.ALU는 연산 결과에 대한 부가 정보인 ‘플래그’도 전달한다. 플래그에 양수, 음수에 정보도 포함되어 있다.연산 결과가 레지스터에 담기 어려울 정도로 크다면 ‘오버플로우’가 일어난다.플래그 정보이런식으로 저장..

C언어의 컴파일

전처리기 (Preprocessor)본격적으로 컴파일하기 전에 처리할 작업들외부에 선언된 다양한 소스 코드, 라이브러리 포함 (#include) 라이브러리 소스들을 진짜로 가져오는 과정이라고 생각하면 된다.프로그래밍의 편의를 위해 작성된 매크로 변환 (#define)컴파일할 영역 명시 (#if, #ifdef)확장자 변환: test.c → test.igcc hongong.c // gcc컴파일러 이용, ./a.out 이라는 실행파일이 생성된다.컴파일 과정 (Compiling)전처리가 완료되어도 여전히 소스 코드전처리가 완료된 소스 코드를 저급 언어(어셈블리 언어)로 변환gcc -S hongong.i -o hongong.s  어셈블 과정 (Assembling)어셈블리어를 기계어(컴퓨터가 알아들을 수 있는 0과..

명령어의 구조와 주소 지정 방식

명령어의 구조연산 코드: 수행할 연산CPU마다 가지는 연산 코드의 종류, 개수가 다르다.데이터 전송 ex) MOVE, STORE 등.. (데이터를 옮겨라. 메모리에 저장해라)산술/논리 연산제어 흐름 변경입출력 제어오퍼랜드: 연산에 사용될 데이터 또는 연산에 사용될 데이터가 저장된 위치연산에 사용될 데이터가 저장된 위치를 ‘주소 필드’라고 부른다. 오퍼랜드를 주소 필드라고도 부른다. 명령어 주소 지정 방식유효 주소 (Effective address)연산에 사용할 데이터가 저장된 위치명령어 주소 지정 방식 (Addressing modes)연산에 사용할 데이터가 저장된 위치를 찾는 방법유효 주소를 찾는 방법다양한 명령어 주소 지정 방식들

소스코드와 명령어

우리가 이용하는 C++, C 이런 것들은 고급 언어이다. 이를 컴퓨터가 이해하기 위해선 변환 과정이 필요하고 이를 통해 저급 언어로 변환된다.고급 언어: 개발자가 이해하기 쉽게 만든 언어저급 언어: 컴퓨터가 이해하고 실행하는 언어. 기계어와 어셈블리어가 있다.기계어: 이진수 0과 1로 이루어진 명령어, 간혹 16진수로도 표현된다.어셈블리어: 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어. 소스 코드에 직접적으로 이용하기도 한다.   고급 언어가 저급 언어로 변환되는 방식에는 크게 2가지가 있다. 컴파일러에 의해 컴파일이 이루어지고 저급 언어로 변환된다.  인터프리터 언어인터프리터에 의해 한 줄씩 실행된다.소스 코드 전체가 저급 언어로 변환되기까지 기다릴 필요가 없다.  내가 사용하는 C..

Landmark Detection (PFLD)

Face Landmark Detetction (F.L.D) 얼굴의 눈썹, 눈코입의 특징점, 얼굴형의 특징점들을 검출해서 위치를 특정해주는 알고리즘이다. 예를 들어 SNOW 어플의 다양한 필터로 표정, 얼굴 기울임 등을 알 수 있음을 확인할 수 있다. Local Variation 표정, 빛 등에 따라 Landmark가 잘못 잡히거나 사라지게 된다. Global Variation Pose, 이미지 화질, 흔들림에 의해 F.L.D 성능이 낮아지기도 한다. Data Imbalance 표정, 빛 등에 따른 데이터들이 다양하지 않다. 데이터가 불균형하다. Model Efficiency Model size와 Computing이 중요하다. PFID는? A Practical Facial Landmark Detector의..

로봇/주행 2023.12.09

0과 1로 숫자를 표현하는 방법

문자 집합 (Character set): 컴퓨터가 이해할 수 있는 문자의 모음 인코딩 (Encoding)코드화하는 과정문자를 0과 1로 이루어진 문자 코드로 변환하는 과정 디코딩 (Decoding)코드를 해석하는 과정0과 1로 표현된 문자 코드로 문자를 변환하는 과정  대표적인 문자 집합에는 아스키 코드가 있다.아스키 코드초창기 문자 집합 중 하나알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자(Enter, Backspace)7비트로 하나의 문자 표현, 표현할 수 있는 문자의 총 개수는 2^7개8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트A는 65로 인코딩, a는 97로 인코딩  문자로 표현하기 때문에 인코딩이 간단한 장점이 있다. 하지만 7비트로, 128개보다 많은 문자를 표현할 수 ..

0과 1로 숫자를 표현하는 방법

비트(bit): 0과 1을 표현하는 가장 작은 정보 단위n비트로 2^n가지의 정보 표현이 가능하다.    워드(word): CPU가 한 번에 처리할 수 있는 정보의 크기 단위하프 워드(half word): 워드의 절반 크기풀 워드(full word): 워드 크기더블 워드(double word): 워드의 두 배 크기  이진법(binary): 0과 1로 수를 표현하는 방법음수 표현하기: 2의 보수  정의는 위와 같지만 구하는 방법은 아래의 방법을 따르면 된다.  양수, 음수는 플래그 레지스터가 구분한다. 이진법으로 큰 숫자를 표현하기에 숫자의 길이가 너무 길어지는 문제가 따른다. 그래서 컴퓨터의 데이터를 표현할때 십육진법을 많이 사용한다.

[나도코딩] 파이썬 실전 프로젝트 | 기억력 테스트 게임, 침팬지를 이겨라

import pygame from random import * def setup(level): # 레벨에 맞게 설정 global display_time display_time = 5 - (level // 3) # 숫자를 얼마의 시간동안 보여줄지 display_time = max(display_time, 1) # 1초 미만이면 1초로 처리 number_count = (level // 3) + 5 number_count = min(number_count, 20) # 최대수가 20이 되게 설정 shuffle_grid(number_count) # grid 형태로 숫자를 랜덤 배치 def shuffle_grid(number_count): rows = 5 columns = 9 cell_size = 130 # 각 G..

Python 2023.12.06