-
프로그래머스 - 이진 변환 반복하기문제 풀이/프로그래머스 2023. 8. 21. 23:52반응형
이 문제는 구현 문제이다. 십진수를 이진수로 바꾸는 방법만 알면 어렵지 않은 문제이다. 이 문제의 입력에서 최악의 경우는 "11111...." 로 15만 길이일 때인데, 15만을 이진수로 바꾸면 10 0100 1001 1111 0000 이 나오므로 시간 초과의 문제는 전혀 없다.
#include <string> #include <vector> #include <algorithm> using namespace std; string toBinary(int num) { string result = ""; if (num == 0) { return "0"; } while (num > 0) { result += to_string(num % 2); num /= 2; } reverse(result.begin(), result.end()); return result; } vector<int> solution(string s) { vector<int> answer; int removed = 0; int cnt = 0; while (true) { if (s == "1") { break; } // 1 routine string temp = ""; for (char c : s) { if (c == '0') { removed++; } else { temp += '1'; } } // 2 routine int num = temp.size(); s = toBinary(num); cnt++; } answer.push_back(cnt); answer.push_back(removed); return answer; }
반응형'문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 피보나치 수 [C++] (0) 2023.08.22 프로그래머스 - 숫자의 표현 [C++] (0) 2023.08.22 프로그래머스 - 최솟값 만들기 [C++] (0) 2023.08.21 프로그래머스 - [1차] 셔틀버스 [C++] (0) 2023.08.21 프로그래머스 - 가장 긴 팰린드롬 [C++] (0) 2023.08.17