분류 전체보기

문제 내용문제 링크 우리가 아는 그 주사위가 있다. 또, (N*M)의 지도가 있다. 주사위의 초기 숫자는 모두 0이며, 놓여진 위치는 x,y로 주어진다. 규칙은 다음과 같다.주사위가 이동할 때, 이동한 (지도의) 칸이 0이라면 주사위 바닥면에 쓰여 있는 수가 칸에 복사된다.0이 아니라면 칸에 쓰여있는 수가 주사위의 바닥면으로 옮겨진다. (칸은 0이 된다)주사위는 지도 바깥으로 이동할 수 없다. (즉 바깥으로 이동하는 명령은 무시한다.)주사위의 초기 좌표, 지도가 주어졌을 때 각 명령에 대해, 명령대로 이동한 다음 주사위 윗 면의 수를 출력한다.  문제 풀이역시나 삼성 코딩테스트 기출 문제인 만큼 구현에 집중하자. 본인은 주사위의 인덱스에 집중했다. /* 초기값 인덱스 * X 1 X X 0..
문제 설명문제 링크 집은 격자판 (R*C)로 나타낸다. 로봇청소기는 항상 첫 번째 열에만 위치하고, 두 개의 행을 차지한다. 다시 말해, (2*1)의 크기이다.  또 각 칸에 있는, 0초 시점의 미세먼지가 주어진다. 미세먼지는 확산 가능한데, 이는 매초마다 이뤄지며 동시에 일어난다. (r,c)에 있는 미세먼지는 인접한 네 방향으로 확산되고, 인접한 방향이 공기청정기나 벽으로 막혀있다면 확산이 발생하지 않는다. 확산되는 양은 A(r,c)/5이고 소수점은 버린다. (r,c)에 남은 양은 기존 미세먼지 양에 확산된 총량을 제한 크기이다. 미세먼지가 확산되고 나서, 공기청정기가 작동한다. 공기청정기에서는 바람이 나오는데, 위쪽 공기청정기는 반시계 방향, 아래쪽 공기청정기는 시계방향으로 순환한다. 바람의 방향대로..
세상 매우 귀찮게 구현해야하는 문제를 이렇게 짧은 지문만으로 제시하는 것도 출제자의 역량이라 생각한다.문제 설명문제 링크삼성 코딩테스트 대비 문제집에 있는 문제로, 문제 자체는 간단하다. 우리가 흔히 아는 3*3*3의 정육면체 큐브가 주어지고, 이 큐브를 주어진 방법대로 돌린다. 예를 들어, U+는 윗 면을 시계 방향으로 돌린다.  문제 풀이아마 이 문제를 푸는 사람 중 절대 다수는 삼성 코테 준비하는 사람들일 것이다. 사실, 삼성 코테, 즉 어드밴스급은 최적화가 그닥 필요 없다. 그냥 문제에서 주어진대로. 문제를 함수 단위로 쪼개서 풀면 된다. 따라서 나름 객체지향적 사고가 필요하다. 본인은 (테스트케이스가 있는 문제인 만큼) 초기화 함수를 만들었다. 초기 각 면의 색상이 정해져 있으므로 그 색깔로 큐..
세그먼트 셀렉터논리 주소를 선형 주소로 빠르게 변환하기 위해 인텔 프로세서는 여섯 개의 프로그래밍 가능한 세그먼테이션 레지스터 각각에 프로그래머가 설정할 수 없는 레지스터를 추가로 제공한다. 이 레지스터는 각각 자신과 연계된 세그먼테이션 레지스터에 들어 있는 세그먼트 셀렉터가 지정한 8바이트 크기의 세그먼트 디스크립터를 포함한다. 세그먼트 셀렉터를 세그먼테이션 레지스터로 로드할 때마다 해당 세그먼트 디스크립터를 메모리에서 대응하는 프로그래밍 불가능한 CPU 레지스터로 로드한다. 이때부터 이 세그먼트를 참조하는 논리 주소 변환은 주 메모리에 저장된 GDT나 LDT에 접근하지 않고도 수행할 수 있게 된다. 프로세서는 세그먼트 디스크립터를 포함한 CPU 레지스터를 직접 참조하면 된다.  GDT나 LDT에 직접..
실제 모드와 보호 모드이는 메모리 변환 방법의 종류로, 실제 모드는 예전 모델에서 사용한 보호 기능이 거의 없는 주소 변환 방법이다. 메모리 주소를 20비트로 계산하여 최대 1MB의 메모리를 접근할 수 있고 주소 변환 방식은 세그먼트:오프셋 방식이다. 즉, 세그먼트 레지스터와 오프셋을 조합하여 물리적 주소를 계산한다. 반면 보호모드는 인텔 마이크로프로세서 80386 모델부터 도입된 모드로, 32비트 주소 지정이 가능하며 최대 4GB 메모리에 접근 가능하다. 보호모드의 핵심은 메모리 보호와 멀티태스킹 지원이다. 아래 내용은 보호모드와 관련된 포스팅이다.  세그먼테이션 레지스터논리 주소는 세그먼트 식별자와 세그먼트 내 상대적인 주소를 나타내는 오프셋으로 이뤄진다. 세그먼트 식별자는 세그먼트 셀렉터라 하는 1..
논리 주소기계어 명령에서 피연산자의 주소나 명령어 주소를 지정할 때 사용한다. 논리 주소는 세그먼트와 세그먼트의 시작부터 실제 주소까지의 거리를 나타내는 오프셋으로 이루어진다. 즉, CPU의 프로그램 카운터(PC)나 명령어에서 직접 참조하는 주소로, CPU의 세그먼트 레지스터와 함께 형성된다. 프로그램이 직접 사용하는 주소이며, 물리 메모리 주소와는 다를 수 있다. CPU는 이 주소를 메모리 관리 장치(MMU)를 통해 변환한다. 논리 주소는 세그먼트 기법을 통해 선형 주소(가상 주소)로 변환된다.  선형 주소가상 주소라고도 불리는 선형 주소는 논리 주소가 세그먼트 기법을 통해 변환된 결과이다. 세그먼트란 페이지와 다르게 가변적인 크기의 논리적 블록을 뜻한다. 세그먼트 기법은 이러한 세그먼트로 메모리를 나..
가상 메모리가상 메모리는 응용프로그램에서 요구하는 메모리와 하드웨어 메모리 관리 유닛(MMU) 사이에 논리적인 계층으로 동작한다. 가상 메모리를 사용하면 여러 프로세스를 동시에 실행하고, 실제 물리 메모리보다 더 많은 메모리를 필요로 하는 프로그램을 실행할 수 있고, 프로그램 코드의 일부분만 메모리에 로드해도 프로세스를 실행할 수 있다.또 각 프로세스는 사용 간으한 물리 메모리의 부분 집합에 접근할 수 있고 프로그램의 단일 메모리 이미지를 공유할 수 있으며 재배치 가능하고 개발자가 물리 메모리 구조에 신경 쓸 필요가 없어진다. 프로세스가 참조할 수 있는 메모리 주소 집합은 물리 메모리 주소와 다른데, 프로세스가 가상 주소를 사용할 때 커널과 MMU가 협력하여 요구한 메모리 주소에서 실제 물리 위치를 찾는..
시그널유닉스의 시그널은 프로세스에 시스템 이벤트를 알려주는 매커니즘을 제공한다. 각 이벤트는 자신만의 시그널 번호를 가지고 있다. 시스템 이벤트는 두 종류가 있다. 비동기적 알림 : 외부 이벤트로 시그널이 발생하거나 인터럽트가 발생동기적인 에러나 예외 : divide by zero(SIGFPE)나 잘못된 메모리 접근(SIGSEGV)와 같은 특정 코드에서 발생 프로세스는 시그널을 무시하거나 비동기적으로 시그널 핸들러를 실행할 수 있다. 프로세스가 이를 지정하지 않으면 커널은 시그널 번호에 따라 기본 동작을 수행한다. 기본 동작은 프로세스를 종료하거나, 코어 덤프에 프로세스 상태를 저장하고 종료하거나, 시그널을 무시하거나, 프로세스를 보류하거나, 프로세스가 중단되어 있었다면 실행을 재개한다. SIGKILL과..
푸더기
'분류 전체보기' 카테고리의 글 목록