728x90
반응형
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

핵심 문제와 예는 위와 같다. 자연수 n을 넣었을 때, 124나라의 숫자로 변환해주면 되는 문제이다.

1 | 1, 2, 4만을 사용하는 나라? -> 3진법으로 처리
2 | 근데 3진법인데도 0, 1, 2가 아니라, 1, 2, 4이므로 10진수 0부터 10까지 변환해가면서 규칙을 찾아야함.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <string>
#include <vector>
 
using namespace std;
 
string solution(int n) {
    string answer = "";
    string base[3= { "4""1""2" }; // 계산해보면 3진수로 0은 4에 매칭, 1과 2는 그대로.
    
    while(n != 0)
    {
        answer = base[(n%3)] + answer; // 나머지 연산을 통해, 일의 자리부터 구해나감.
        if(n%3 == 0// 만약에 3의 배수를 나누면
            n = (n-1)/3// 몫을 구할 때 하나를 빼야 한다.
        else
            n = n/3
    }
    return answer;
}
cs

base 라는 배열 대신에, answer = "412"[a] + answer; 이런 식으로 풀이한 경우도 있다. "412"[n]은 굉장히 신박했다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

728x90
반응형

'프로그래밍응용 > 오답노트' 카테고리의 다른 글

프로그래머스, 완전탐색, 소수찾기(C++)  (0) 2021.02.22
카카오 2021 문제 - 신규 아이디 추천(C++)  (0) 2021.02.21
다음 큰 숫자  (0) 2021.02.18
문자열 검색  (0) 2021.02.18
두 수 사이 합  (0) 2021.02.18

+ Recent posts