본문 바로가기

PS/프로그래머스

[프로그래머스 LV 2] 124 나라의 숫자 C++ / javascript

728x90

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

 

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

 

programmers.co.kr

 

가끔 이런 수학적인 풀이를 요하는 문제를 올때 조금 시간을 잡아먹는 경우가 있다.

푼 방법은.......

3을 나누어서 몫과 나머지를 구한 후

조건에 맞게 숫자를 앞에서 부터 넣어주면 된다

 

혹여나 나머지가 0일경우 몫을 -1 해주어야 정상적으로 풀린다.

6의 경우를 봐도 6/3==2 , 6%3 ==0  인데

몫이 2기때문에 1을 빼주지않으면 14가 나오는게 아니라 24가 나온다.

 

 

 

 

C++코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <string>
#include <vector>
 
using namespace std;
 
string solution(int n) {
    string answer = "";
    int mok=n, namugi;
 
    while (mok!=0) {
        namugi = mok % 3;
        mok = mok / 3;
 
        if (namugi == 1)
            answer = '1' + answer;
        if (namugi == 2)
            answer = '2' + answer;
        if (namugi == 0) {
            answer = '4' + answer;
            mok--;
        }        
    }    
    return answer;
}
cs

 

 

자바스크립트 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function solution(n) {
    var answer = '';
 
    while(n!=0){
        if(n%3 == 1){
        answer='1'+answer;
        n=Math.floor(n/3);
        }       
        //밑의 else if와 else를 c++에서 생각없이 쓰듯이 if로 구성하면 시간초과가뜬다
        //c++이 선녀였다..
        else if(n%3 ==2){
            answer='2'+answer;
            n=Math.floor(n/3);
        }
        else {
            answer='4'+answer;
            n=n/3-1;
        }
    }
    return answer;
}
cs

 

 

(좌)C++ / (우)자바스크립트

 

 

728x90