나 개발자 진짜 되냐?

백준 C++ 11005번 진법 변환 2 ( reverse, 몫과 나머지 ) 본문

C++을 시작해봐요!/구현문제를 풀어봤어요!

백준 C++ 11005번 진법 변환 2 ( reverse, 몫과 나머지 )

Snow Rabbit 2026. 1. 16. 21:41

 

 

1월 반이 갔다.

요즘 자꾸 새벽에 깨고 아침에 자는 버릇이 들어버렸다.

후딱 고쳐야지..ㅎㅎㅋ

 

즐거운 금요일 보내시길 바랍니다!

 


 

저번에 진법 변환 문제를 풀었었다.

2026.01.12 - [C++을 시작해봐요!/구현문제를 풀어봤어요!] - 백준 C++ 2745번 진법 변환 ( 진수는 누적 곱! )

 

백준 C++ 2745번 진법 변환 ( 진수는 누적 곱! )

나는 Mr.mine이라는 게임을 즐겨한다. 방금 찍은 사진인데.. 천시간이 넘었네...ㅋㅋㅋㅋ 사실 방치형 광산게임이다 보니까..아직... 한참 멀었다. 2566km가 끝인데나는 이제 1586km이다.1km를 파는 데

qua28.tistory.com

 

ㅋㅋㅋㅋㅋㅋ 헛 미스터마인 이야기가 나오네

지금도 해놓고 있는디 ㅎㅎㅋ

 

지금은 1623km이다 ㅎㅋ

 

여하튼!

저번에 진법 변환은

답 * 진법 + 값을 누적 곱해주었다.

 

흠..

공통적으로 진법을 곱해주었으니...

주어진 숫자를... 일단 진법으로 나눠주면 될... 거라고 생각했는데

진수가.. 막 16진 수면 2진수랑 뭔가 비슷하게 나올 거 같고..

 

 

머리가 터질 거 같아서 결국 생각은 멈추고 제 선생을 찾았다.

 

전에 풀었던 문제랑 비슷하고!

나눠줘도 된다고! 나 자신을 믿으라고 해줬다.

그리고 힌트 3개를 주었다.

 

1. / %를 활용해라

2. 숫자를 문자로 잘 바꿔라

3. 결과의 순서

 

 

내 나름 잘 풀었다고 생각했지만..? 답은 뭐 엉뚱했다.

 

2. 숫자를 문자로 잘 바꿔라

 

음..

두 번째에 else에서

a + 'A' + 10은 아니라고 하셨다.

전에 문제에서는 10부터 시작이어서 10을 더해주었는데..

이번에는 좀 달랐다.

진짜 A를 만들려면

a에다가 'A'를 더하면 'A'가 나와야 하는데

10을 더해버리니 뭐 이상한 숫자가 나올게 뻔하다.

그래서 a - 10을 해주고 거기에 'A'를 더해주어야 한다.

 

그리고 나는 사실

while문을 n이 b로 나누어서 바닥이 될 때까지 하려고 했던 취지였는데...ㅋㅋ

만약에 딱 떨어지게 되면 0으로 나가지게 된다.ㅋㅋㅋ

그래서!

n이 0보다 클 때로 바꿔야 한다.

 

3. 결과의 순서

뭔가 했더니

reverse를 해줘야 한다고 한다.

계산해 보면 13을 2진수로 바꿀 때

13을 2로 나누고 ( 답 : 1 )

6을 2로 나누고 ( 답 : 0 )

3을 2로 나누고 ( 답 : 1 )

1을 2로 나누고 ( 답 : 1 )

 

이러면 답이 1011인데

계산해 보면 1 + 2 + 8 이여서 11이 된다

..?!?

 

그렇다 이게 맨 처음에 계산된 게 실제로 맨 뒤의 숫자이다.

그래서

뒤집어줘서

1101 이 답이 된다.

 

뒤집어줘야 한다!!

 

아!! 그리고!! string ans = 0은... 안된다..ㅋㅋㅋㅋ

그래서 넣을 때는 ""로 해야 하는데 사이에 빈칸을 넣어두면 안 된다고 한다.

공백에 따라 결과가 이상하게 나올 수도 있다고 한다. 조심하자!!

고쳐본 식이다.

따봉으로 넘어갈 수 있었다.

 

사실 진법 1을 다시 풀어보겠다고 호기롭게 도전했지만

결국 또 힌트로 진법1을 풀고 나서야

진법 2를 다시 푸는데 크으으으게 어렵지 않을 수 있었다.

확실히 사람은 복습이 필요하다.


 

다시 또 풀라면 풀 수 있으려나 모르겠다.

나누는 것을 잊지 말고!

숫자 조건을 잊지 말고!

뒤집는 것을 잊지 말자!