본문 바로가기

728x90

Dev

[백준/BOJ] 백준 코딩 알고리즘 1149번 RGB거리 Python 문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. 입력 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 .. 더보기
[백준/BOJ] 백준 코딩 알고리즘 1929번 소수 구하기 Python 문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 예제 입력 1 3 16 예제 출력 1 3 5 7 11 13 첫 번째 아이디어 소수 여부를 판별하는 것은 많은 알고리즘 문제에서 등장하고는 하는데, 그럴 때 보통 직관적으로 떠오르는 코드는 다음과 같다 def is_prime(n): if n in [0, 1]: return False else: for i in range(2, n): if n % i == 0: return False return True print(is_.. 더보기
[백준/BOJ] 백준 코딩 알고리즘 11729번 하노이 탑 이동 순서/Python 문제 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5개인 경우의 예시이다. 입력 첫째 줄에 첫 번째 장대에 쌓인 원판의 개수 N (1 ≤ N ≤ 20)이 주어진다. 출력 첫째 줄에 옮긴 횟수 K를 출력한다. 두 번째 줄부터 수행 과정을 출력한다. 두 번째 줄부터 K개의 줄에 걸쳐 두 정수 A B를 빈.. 더보기
[백준/BOJ] 백준 코딩 알고리즘 2447번 별 찍기 - 10/Python 문제 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. *** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다. 입력 첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3k이며, 이때 1 ≤ k < 8이다. 출력 첫째 줄부터 N번째 줄까지 별을 출력한다. 예제 입력 1 27 예제 출력 1 **************************.. 더보기
[혼공컴운/OS] 입출력장치 | 장치 컨트롤러 | 프로그램 입출력 | 인터럽트 입출력 | DMA 입출력 | 장치 드라이버 장치 컨트롤러 컴퓨터 내부와 정보를 주고 받을 수 있도록 하는 하드웨어적인 통로 장치 컨트롤러의 역할 CPU와 입출력장치 간의 통신 중개: CPU와 입출력장치간 데이터를 주고받을 수 있도록 해줌 오류 검출: 연결된 입출력 장치에 문제가 없는지 오류 검출 및 확인 데이터 버퍼링: 전송률이 다름으로써 생기는 문제를 해결하기 위해 데이터를 버퍼에 저장하여 전달 장치 컨트롤러의 데이터 입출력 방식 프로그램 입출력: 프로그램 속 명령어로 입출력 장치를 제어하는 방식 메모리 맵 입출력: 메모리 접근 주소공간과 입출력 접근용 주소공간을 함께 사용 고립형 입출력: 메모리 접근 주소 공간과 입출력 접근용 주소공간을 독립적으로 사용 (입출력장치 읽기/쓰기 선을 따로 둠으로써 가능해지는 방법임) 인터럽트 기반 입출력: 하드.. 더보기
[혼공컴운/OS] 메모리 | DRAM | SRAM | SDRAM | DDR | 논리주소와 물리주소 | 한계 레지스터 | 베이스 레지스터 메모리(RAM)의 종류 메모리의 종류 DRAM: Dynamic RAM → 시간이 지나면 데이터가 사라지며 집적도가 높아 메인 메모리로 주로 사용 SRAM: Static RAM → 시간이 지나도 데이터가 사라지지 않으면 집적도가 낮고 비싸 캐시메모리로 주로 사용 SDRAM: Synchronous Dynamic RAM → 클럭에 따른 데이터 전송에 최적화된 DRAM DDR SDRAM: Double Data Rate Synchronous Dynmamic RAM → 대역폭이 2배 넓어진 Synchorous DRAM 자문자답 DRAM은 왜 집적도가 높을까? DRAM은 한 셀당 한 개의 트렌지스터와 한 개의 커패시터(데이터저장)로 구성 DRM은 집적도를 높이기 위해 선폭을 작게 만듦 또한 집적도를 높이기 위해 소자.. 더보기
[혼공컴운/OS] CPU의 속도를 높이는 방법 | 클럭 | 멀티코어 | 멀티스레드 | 파이프라이닝 | 슈퍼스칼라 | OoOE | RISC | CISC CPU의 속도를 높이려면 어떤 방법이 있을까? 작업 속도의 단위(클럭)을 빠르게 한다! → 클럭 / 오버클럭 명령어 인출 및 해석 부품(코어)의 수를 늘린다! → 멀티코어 프로세서 하나의 코어가 여러 개의 명령어를 동시에 처리할 수 있도록 한다! → 멀티스레드 프로세서 명령어 처리 파이프라인을 여러개 구성한 → 슈퍼스칼라 데이터 의존성 등이 없어서 대기할 필요가 없는 명령어는 먼저 처리해서, 최대한 파이프라인의 중단을 방지한다 → OoOE (비순차적 명령어 처리) 명령어를 중복해서 실행할 수 있도록 한다! → 명령어 파이프라이닝 데이터 위험: 데이터 간 의존성으로 인해 문제 발생 위험 제어 위험: 불필요한 명령어를 미리 읽어올 위험 구조 위험: 서로 다른 명령어가 동시에 같은 부품을 사용할 위험 파이프라.. 더보기
[혼공컴운/OS] CPU | 레지스터의 종류 | CPU 명령어 사이클 | 인터럽트 ALU : 산술 및 논리 연산 수행 [input] 레지스터에서 피연산자 받기 + 제어장치에서 제어신호 받기 [output] 연산 결과와 플래그를 내보내기 플래그는 플래그 레지스터에 저장 → 플래그의 종류 { 부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 플래그, 슈퍼바이저 플래그 } 제어장치 : 명령어 해석 및 제어신호 출력 [input] 클럭이라는 입력 신호 읽기 → 클럭 단위로 제어 신호 전달 [input] 명령어 레지스터에서 해석해야 할 명령어 읽기 [input] 플래그 레지스터에서 플래그 값 읽기 [output] 제어 신호를 메모리와 입출력 장치에 제어버스를 통해 전달 레지스터 : CPU 내의 임시저장장치 프로그램 카운터: 메모리에서 가져올 명령어가 저장된 주소를 저장 명.. 더보기

728x90