Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

빠똥빠똥

2089번 -2진수 - ☆ 본문

백준

2089번 -2진수 - ☆

조주똥 2020. 7. 10. 17:09

#문제링크 : https://www.acmicpc.net/problem/2089

<전략>

1. -2로 나누고 나머지 연산을 하면 2로 나누고 나머지 연산을 했을때와 다르다. 2로 나누었을 때는 나머지가 항상 +1, 0 이지만 -2로 나누었을 때는 나머지가 항상 -1, 0이 된다. 이 나머지를 양수로 바꾸어 주어야 원하는 다항식이 나온다.

2. -2로 나누었을때, 나머지가 0인 경우와 나머지가 0이 아닌경우로 나눈다. 나머지가 0인 경우, 그 다음 n값은 n/-2 로 하면 되고, 나머지가 0이 아닌 경우에는 다시 한번 더 경우를 나누어야 한다. 나머지가 0이 아니면서, n이 양수면, 나머지는 +1이 되므로 기존 진법연산과 같이 하면된다. 하지만 나머지가 0이 아니면서, n이 음수인 경우는 나머지가 -1이기 때문에 몫을 하나 증가시켜 주고 나머지를 +1로 만들어줘야 한다. 즉, 예를 들어 -5를 -2로 나눈다 하면, -5 = -2*2 - 1 이되므로 몫인 2를 3으로 하나 증가시켜서 -5 = -2*3 + 1로 바꾸어준다는 소리다. 이렇게 경우를 나누어 반복문에 작성하면 해결할 수 있다.

3. 처음에 생각했을때는, 경우를 나눌때, n이 음수라면 무조건 몫을 하나 증가시키고, 양수면 그대로 하는 방법으로 했는데, 논리 자체에 오류가 있었다. 먼저, n을 나누었을 때 나머지가 0인지 아닌지부터 따져줘야 한다.

Code

 

'백준' 카테고리의 다른 글

10872번 팩토리얼(EAX, 스택프레임) - ☆  (0) 2020.07.10
11653번 소인수분해 - ☆  (0) 2020.07.10
1212번 8진수 2진수  (0) 2020.07.10
1373번 2진수 8진수(아스키 코드)  (0) 2020.07.10
11005번 진법 변환2(reverse)  (0) 2020.07.09