CodingTest Practice/Programmers

프로그래머스 : 124나라의 숫자 (C++, Lv.2, 연습문제)

몽땅마니아(MDD) 2022. 5. 18. 21:47

https://programmers.co.kr/learn/courses/30/lessons/12899

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

문제를 보자마자 3진수 구하는 것 처럼 풀면 되겠다고 생각했는데 그러기엔 규칙성이 좀 다른 느낌이었다.

대충 문제에 대해 간단한 이해만 하고 집에 와서 문제를 다시 보았다.

n이 꽤 크기도 하고 예시 외의 숫자도 적어보니 어느 정도 간단한 규칙성을 알게 됐다.

 

글씨 킹받네;;

대충 끄적여 본건데 숫자가 3으로 나눠 떨어지는 경우 몫에서 -1을 해주고 계산하니 얼추 맞는 느낌이라 코드를 실행해봤더니 성공적이었다.😀

 

소스코드

#include <string>
#include <vector>

using namespace std;

string solution(int n) {
    string answer = "";
    
    //n이 0보다 큰 경우 계산 반복
    while(n>0) {
        int a = n/3; int b = n%3; // a: 몫 b: 나머지
        string add;
        
        //나머지에 따라 다른 문자열이 붙도록 구현
        if(b==1) add= "1";
        else if(b==2) add = "2";
        else{ //b==0 일 경우에는 몫에서 1을 뺌
            a = a-1;
            add = "4";
        }
        answer = add + answer;
        n= a;
    } 
    return answer;
}