| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 백준
- C++
- 티스토리챌린지
- C#문법
- c#기초문법
- 백준 C++
- c#코테
- 리그오브레전드턴제게임
- 백준 구현문제
- solved class 2
- 유니티공부
- 백준코테
- unity게임
- 바킹독알고리즘
- c#기본문법
- 오블완
- c++ 백준
- 유니티서바이벌게임만들기
- unity3dservival
- c#코딩기초트레이닝
- unity3d게임만들기
- c++ solved.ac
- 백준 c++ 공부
- Unity
- 백준코딩테스트
- 유니티게임만들기
- unity게임만들기
- c#
- 유니티
- 바킹독
- Today
- Total
나 개발자 진짜 되냐?
코딩테스트 입문 - 이진수 만들기 ( while, reverse ) 본문

어려운 듯 안 어려운 듯..
풀이방법을 몰라서
자꾸 인지 씨를 찾는다.
괴롭다

흠.....
이런 이진수엔 비트마스크? 막 >> << 이거 좋았던 거 같은데..
..
인지 씨는 NO라고 했다.
그리고 뭔 올림수? 가 필요하다고 말했다.
맨 뒤부터
더해주고
올림수가 있으면 다음에 더해주고 그러라는 거 같다.
쉽게 설명해 달라고 부탁했다.
1. 일의 자리부터 본다.
2. bin1과 bin2를 본다.
3. 둘 다 1일 경우 1+1은 2기 때문에
0이면, /2를 해준 몫이 = 1 다음 자리 숫자로 올라가고
/2 해준 나머지가 처음자리 숫자가 된다. 아마 0이겠죠?
1.
문자열 길이 -1
bin1.size() -1
2.
while문으로 만들어야 한다.
한 칸씩 앞으로 이동하면서 덧셈을 하도록
그래서 i 가 0이 아니고 j도 0이 아니고 carry 더 이상 올릴 수도 0일 때까지
셋다 될 때까지 돌릴 테니
or문으로
while(i >= 0 || j >= 0 || carry > 0)
작성한다.
3.
원리는 이렇다.
올림수를 sum에 따로 저장해 두고
i는 여기서 자릿수이다.
i >= 0
나눌 수가 있다면,
sum에 그 숫자를 더해주고
i-- 해줘서 자릿수를 앞으로 당긴다.
sum += (bin1[i] - '0');
i--;
보통 1 아님 0이 들었으니
sum에는 0이나 1이 더해졌을 것이다.
j도 마찬가지이다.
그렇게 한 사이클 다 돌리게 되면
answer에다가 string으로 바꾸고 넣어줘야 하는데.
아래자릿수를 먼저 넣어줘야 하니까
% 2 하고 남은수를 넣게 된다.
answer += to_string(sum%2);
그리고 이제 올라갈 수 carry 에는
올림수를 넣게 된다.
carry = sum/2;
위에 식에서 1,1이라고 치게 되면
1을 sum에 더하고
1도 sum을 더했으니 답은 2.. 지만 여기선 2가 10 이니까
carry에는 2/2 한몫을
원래 자리에는 2/2한 나머지를 넣는 것이다.
그럼 이제 carry이 1이 되고 나서
다시 sum의 값이 시작되겠다.
또 11 일경우
sum값은 3이 되면서
나머지 몫 둘 다 11 이 나오게 된다.
제일 중요한 것은
우리는 맨 뒤부터 했는데 answer에는 또 맨 앞부터 push 되기 때문에
마지막에 reverse를 해줘야 한다.


이렇게 다 이해하고 문제를 뒤집어서 생각하면 참 쉬운데 말이다.
다시 풀려고 하면 또 못 풀고..
숫자 더하는 게 이렇게 어려운 건가....
쩝
'프로그래머스를 풀어보아요! > C++' 카테고리의 다른 글
| 코딩테스트 입문 - 연속된 수의 합 ( 패턴 ) (0) | 2026.05.22 |
|---|---|
| 코딩테스트 입문 - 문자열 밀기 ( find, 글자 더하기 ) (0) | 2026.05.22 |
| 코딩테스트 입문 - 치킨 쿠폰 ( 너무 쉬운데 못 풀어서.. ) (0) | 2026.05.21 |
| 코딩테스트 입문 - 로그인 성공? ( map, count() ) (0) | 2026.05.20 |
| 코딩테스트 입문 - 옹알이 (1) ( replace, erase, remove ) (0) | 2026.05.20 |