728x90
삽질을 매우 많이 한 문제.
체크해야할 사항들은
1. 2진수 -> 10진수 -> 2진수 변환하는 방식으로는 풀 수 없다. 이유는 주어지는 2진수가 80자 까지 가능하기 때문.
long long 을 써도 표현 불가능한 범위다.
2. 0 + 0 은 null이 아니라 0이다. 당연한 얘기겠지만 알고리즘만 신경쓰다보니 0을 출력하는 예외를 두지 않았다.
3. 00000 이나 000001 이 가능하다. 미리 필요없는 0은 제거해주는 것이 만들기에 도움이 된다.
매우 헤맨 부분이 0을 제거하는 부분인데
string 의 erase() 메소드를 활용했지만 for문을 이용해선 해당 index i 를 erase하는건 사실상 이치에 맞지 않는다.
만약 string "00001" 에서 0을 4개 지우려 할때
*조건문을 이용해 if(a[i]=='0') 일때 erase 한다고 생각하게 되면 맨처음의 0을 지우는 순간 index 1이었던 2번째 0은 *
index 0의 첫번째 0이 되기 때문이다. erase 를 할때마다 string 은 동적으로 index가 변경된다.
고쳐야 할 부분
carry 는 굳이 stack 일 필요없다. 그냥 bool 변수로도 가능하다. 쓸데없이 복잡하게 만들 필요가 없었다.
계산하는 부분을 bin 함수로 분리한거 치고 코드가 전혀 짧아지지않았다.
'프로그래밍 > programmers&bj' 카테고리의 다른 글
[C++][SWEA] 1247. 최적 경로 (0) | 2020.03.14 |
---|---|
[C++][알고리즘] 백준 1157번 단어 공부 (0) | 2020.03.12 |
[C++][알고리즘] 프로그래머스:: 베스트앨범 (해쉬) (0) | 2020.03.09 |
[C++][알고리즘] 프로그래머스:: 위장 (해쉬) (0) | 2020.03.08 |
[C++][알고리즘] 프로그래머스:: 단어 변환 (DFS) (2) | 2020.03.05 |