3으로 나눈 나머지를 더하는 방식으로 진행하면 결과를 도출할 수 있다.
124숫자를 사용해야 하므로 3으로 나눈 나머지의 경우인 0, 1, 2에서 0은 4로 변환해서 사용해준다.
하지만 여기서 문제점이 발생하는데 나머지가 0으로 나올 때 값이 정확히 떨어지지 않는다.
1, 2, 4 세가지 수가 연속으로 나올 때 몫이 같야야 순회가 되는데
4일 때는 3으로 딱 떨어져서 몫이 1, 2일 때보다 +1되는 걸 볼 수 있다.
그래서 주어진 값을 나눈 후 나머지가 0일 때(변환하면 4)는 -1을 해야 정상적인 결과를 볼 수 있다.
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
while(n > 0) {
int temp = n % 3;
n = n / 3;
if(temp == 0) {
n--;
temp = 4; }
answer = to_string(temp) + answer;
}
return answer;
}
|
cs |
'problem solving' 카테고리의 다른 글
[프로그래머스]모의고사 (0) | 2020.03.06 |
---|---|
[프로그래머스]완주하지 못한 선수 (0) | 2020.03.06 |
[프로그래머스]다리를 지나는 트럭 (0) | 2020.03.05 |
[프로그래머스]멀쩡한 사각형 (0) | 2020.03.05 |
2186번: 문자판 (0) | 2020.03.05 |