PS

프로그래머스 - 124 나라의 숫자

728x90

programmers.co.kr/learn/courses/30/lessons/12899?language=cpp

 

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

 

programmers.co.kr

문제 설명의 예시들을 보다 보면

1, 2, 4  이 세개의 숫자로 모두 처리하므로,

3으로 나누면서 해결할 수 있음을 알 수 있게 된다.

 

3으로 나눈 나머지가 0 -> 4

3으로 나눈 나머지가 1 -> 1

3으로 나눈 나머지가 2 -> 2

 

나머지값을 answer 앞에 하나씩 붙이면서 처리하고

n 을 줄여야하므로, 3으로 나누는데,

주의할점은 3으로 나눌때 n /= 3 만으로는 오류가 날 수 있다.

 

예를들어, n = 6 일때,

처리 과정을 보면

처음에 answer = arr[6 % 3] + answer 가 되어 answer = "4" 가 되고,

이 n 을 그대로 n /= 3 하게 되면 n = 2 가 되어, 

2를 3으로 나눈 나머지가 2가 되버린다

그래서 답이 "24" 가 되버리는데, 실제 답은 "14" 이므로

3으로 나눠떨어지는경우 1을 빼준다. (n = n / 3 - 1)

 

- c++

 

#include <string>
 
using namespace std;
 
string solution(int n) {
    string answer = "";
    string arr[3= {"4""1""2"};
    while(n != 0) {
        answer = arr[n % 3+ answer;
        if (n % 3 == 0)
            n = n / 3 - 1;
        else
            n = n / 3;
    }
    return answer;
}
cs

 

 

 

728x90

'PS' 카테고리의 다른 글

프로그래머스 - 다음 큰 숫자  (0) 2020.12.07
프로그래머스 - 기능 개발  (0) 2020.12.07
프로그래머스 - 피보나치 수  (0) 2020.12.07
프로그래머스 - 최댓값과 최솟값  (0) 2020.12.07
BOJ 17142 - 연구소 3  (0) 2020.12.07