문제 풀이
이번 문제는 진법 변환을 하는데, 추가로 임의로 지정한 이진 변환이 있습니다. 이렇게 ‘진법 변환의 개념을 활용하여 특정 개념을 정의하고 이걸 사용하여 풀어라’라는 형태의 문제가 나올 수 있습니다. 실제로 사용하는 진법 변환과, 문제에서 임의로 지정한 진법 변환의 의미를 헷갈리지 않아야 합니다.
문제 풀이 흐름
먼저 문제에서 제시한 이진 변환에 대해 풀어보면 다음과 같습니다.
1. 2진법으로 이루어진 문자열에서 0을 모두 제거하고 합칩니다.
2. 남은 1의 개수를 10진법 기준으로 셉니다.
3. 2번 과정에서 나온 개수를 2진법으로 변환합니다.
조금 복잡해보이지만 결국 문자열에서 특정 문구를 제거하고 10진수로 만든 다음, 다시 이 숫자를 2진수로 만들면 됩니다. 참고로 10진수에서 2진수를 변환할 때는 진법 변환 함수 대신 bin() 함수를 사용하면 됩니다.
‘제거하고 합친다’라는 문구를 보고 ‘함정 같다’는 느낌이 들었다면, ‘짝지어 제거하기’ 문제에서 얻은 게 있는 겁니다. 실제로 문자열을 제거하고 합치고 다시 확인하는 작업을 거치면 적지 않은 비용이 발생합니다. 심지어 이번 문제에서는 0을 제거할 때 0이 몇 번 제거되었는지도 기록해야 하므로 문제가 말하는 방식대로 구현하기 어렵습니다.