https://www.acmicpc.net/problem/6568
제목부터 정신을 혼미하게 만드는 문제이다.
우리 알고리즘 스터디의 파이썬 사용자가 이번 주에 풀자고 고른 문제인데, 아주 악랄하기 그지없다.
혼미한 제목과는 별개로 문제 자체는 굉장히 재미있었다.
막상 문제를 읽으면 잘 이해가 가지 않을 수도 있다. 나처럼 CS지식이 얕은 분을 위하여 조금 첨언하자면,
1. 자바의 경우, Integer.parseInt(number, 2) 로 2진수로 변환할 수 있다.
2. 이 문제에서 앞의 8비트 중 앞의 3비트만 남기는 것은 number >> 5 나, 2^5를 나누기 연산하는 것으로 구할 수 있다.
3. 같은 맥락으로, 값을 구하는 것 역시 2^5를 모듈러 연산하는 것으로 구할 수 있다.
4. 프로그램 카운터(PC)는 다음에 실행할 명령어의 메모리 주소값을 의미한다. 즉 PC가 4라면, 이번 명령은 메모리의 4번째 줄을 실행한다.
5. 00000000 에서 -1을 하면 11111111이 된다.
6. 11111111에서 1을 더하면 00000000이 된다.(10000000이지만, 9비트이므로 앞의 한자리가 잘려 8비트만 남는다)
이 요소들을 알고 있다면 쉽게 풀리는 시뮬레이션 문제이다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 11780번 플로이드 2 (JAVA) (0) | 2021.08.01 |
---|---|
백준 6198번 옥상 정원 꾸미기 (JAVA) (0) | 2021.08.01 |
백준 11779번 최소비용 구하기 2 (JAVA) (0) | 2021.07.25 |
백준 14725번 개미굴 (JAVA) (0) | 2021.07.25 |
백준 5670번 휴대폰 자판 (JAVA) (0) | 2021.07.25 |