분류 전체보기(196)
-
CPU의 작동원리2️⃣ - 레지스터
프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장된다. CPU마다 레지스터의 이름, 크기, 종류가 매우 다양하다. 대표적인 레지스터 8가지에 대해 정리하자. 프로그램 카운터 명령어 레지스터 메모리 주소 레지스터 메모리 버퍼 레지스터 플래그 레지스터 범용 레지스터 스택 포인터 베이스 레지스터 우선 7번과 8번은 주소 지정 방식에 사용되는 레지스터이다. 1번부터 정리해보자. 프로그램 카운터는 메모리에서 읽어 들일 명령어의 주소를 저장한다. 명령어 포인터라고 부르는 CPU도 있다. 명령어 레지스터는 방금 메모리에서 읽어 들인 명령어를 저장한다. 제어장치가 이 명령어 레지스터에 저장된 명령어를 해석하고 제어신호를 보낸다. 메모리 주소 레지스터는 메모리의 주소를 저장하는 레지스터이다. CPU가 읽..
2024.04.18 -
0 만들기 (백준 7490)
문제 1부터 N까지의 수를 오름차순으로 쓴 수열 1 2 3 ... N을 생각하자. 그리고 '+'나 '-', 또는 ' '(공백)을 숫자 사이에 삽입하자(+는 더하기, -는 빼기, 공백은 숫자를 이어 붙이는 것을 뜻한다). 이렇게 만든 수식의 값을 계산하고 그 결과가 0이 될 수 있는지를 살피자. N이 주어졌을 때 수식의 결과가 0이 되는 모든 수식을 찾는 프로그램을 작성하라. 입력 첫 번째 줄에 테스트 케이스의 개수가 주어진다( idx + 1); let tmp = []; let p = ['', '+', '-']; function go(level) { if (level === elem - 1) { let ret = check(tmp, numbers); if (ret) console.log(ret); retu..
2024.04.18 -
빌런 호석 (백준 22251)
https://www.acmicpc.net/problem/22251 22251번: 빌런 호석 LED를 2개까지 바꿀 수 있을 때, 5층에서 3층, 6층, 8층, 그리고 9층으로 바꿔버릴 수 있다. www.acmicpc.net 재미있는 문제였다. 물론 구현에는 실패했지만. 문제를 분석해보자. N : 1부터 N층까지 이용 가능 K : 디스플레이는 K자리 수 P : LED의 반전 갯수는 최소 1개 ~ 최대 P개 X : 현재 엘리베이터가 멈춘 층은 X층 우선 이렇게 디스플레이의 숫자를 배열로 표현할 수 있겠다. const ch = [ [1, 1, 1, 0, 1, 1, 1], // 0 [0, 0, 1, 0, 0, 0, 1], // 1 [0, 1, 1, 1, 1, 1, 0], // 2 [0, 1, 1, 1, 0, ..
2024.04.18 -
빗물 (백준 14719)
문제 2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다. 비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까? 입력 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다. 따라서 블록 내부의 빈 공간이 생길 수 없다. 또 2차원 세계의 바닥은 항상 막혀있다고 가정하여도 좋다. 출력 2차원 세계에서는 한 칸의 용량은 1이다. 고이는 빗물의 총량을 출력하여라. 빗물이 전혀 고이지 않을 경우 0을 출력하여라. 예제 입력 1 4 4 3 0 1 4 예제 출력 1 5 예제 입력 2 4 8 3 1 2 3 4 ..
2024.04.17 -
문자열 게임 2 (백준 20437)
문제 작년에 이어 새로운 문자열 게임이 있다. 게임의 진행 방식은 아래와 같다. 알파벳 소문자로 이루어진 문자열 W가 주어진다. 양의 정수 K가 주어진다. 어떤 문자를 정확히 K개를 포함하는 가장 짧은 연속 문자열의 길이를 구한다. 어떤 문자를 정확히 K개를 포함하고, 문자열의 첫 번째와 마지막 글자가 해당 문자로 같은 가장 긴 연속 문자열의 길이를 구한다. 위와 같은 방식으로 게임을 T회 진행한다. 입력 문자열 게임의 수 T가 주어진다. (1 ≤ T ≤ 100) 다음 줄부터 2개의 줄 동안 문자열 W와 정수 K가 주어진다. (1 ≤ K ≤ |W| ≤ 10,000) 출력 T개의 줄 동안 문자열 게임의 3번과 4번에서 구한 연속 문자열의 길이를 공백을 사이에 두고 출력한다. 만약 만족하는 연속 문자열이 없..
2024.04.17 -
컨베이어 벨트 위의 로봇 (백준 20055)
문제 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부터 2N까지의 번호가 매겨져 있다. 벨트가 한 칸 회전하면 1번부터 2N-1번까지의 칸은 다음 번호의 칸이 있는 위치로 이동하고, 2N번 칸은 1번 칸의 위치로 이동한다. i번 칸의 내구도는 Ai이다. 위의 그림에서 1번 칸이 있는 위치를 "올리는 위치", N번 칸이 있는 위치를 "내리는 위치"라고 한다. 컨베이어 벨트에 박스 모양 로봇을 하나씩 올리려고 한다. 로봇은 올리는 위치에만 올릴 수 있다. 언제든지 로봇이 내리는 위치에 도달하면 그 즉시 내린다. 로봇은 컨베이어 벨트 위에서 스스로 이동할 수 있..
2024.04.17