반응형
https://programmers.co.kr/learn/courses/30/lessons/12899
본 문제는 프로그래머스 연습문제다. 개인적으로 많이 고전했던 문제다. 10진법을 124 나라 진법으로 바꾸는 문제인데, 몇 진법으로 바꾸어야 할지 엄청 힘들었다. 결론적으로 10진법을 3진법으로 바꿔야 하며, 3진법에서 124 진법으로 다시 바꿔야 한다. 우선 3진법일 때, 배열을 {0, 1, 2}로 초기화하였는데 124 진법은 {4, 1, 2}로 초기화해야 한다. 즉, 3진법에서 3으로 나눴을 때 나머지가 0인 경우만 124 진법으로 바꾸면 된다.
구분 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
3 | 1 | 2 | 10 | 11 | 12 | 20 | 21 | 22 | 100 | 101 | 102 | 110 | 111 | 112 | 120 |
124 | 1 | 2 | 4 | 11 | 12 | 14 | 21 | 22 | 24 | 41 | 42 | 44 | 111 | 112 | 114 |
- 위 표와 같은 결과가 나오므로 다음과 같이 코딩하면 된다.
- 입력된 숫자 n을 3진법으로 바꾼다.
- n % 3 == 0 일 경우 n에서 1을 뺀 다음 진법 계산을 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
char a[] = {'4', '1', '2'};
while (n > 0) {
int idx = n % 3;
n /= 3;
if (idx == 0) n -= 1;
answer = a[idx] + answer;
}
return answer;
}
|
cs |
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 연습문제 - 문자열 내 마음대로 정렬하기, C++ (0) | 2020.01.06 |
---|---|
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT - 오픈 채팅방, C++ (0) | 2020.01.06 |
[프로그래머스]서머코딩/윈터코딩(~2018) - 소수 만들기, C++ (0) | 2020.01.06 |
[프로그래머스] 2017 카카오코드 예선 - 카카오프렌즈 컬러링북, C++ (0) | 2020.01.04 |
[프로그래머스] 완전탐색 - 소수 찾기, C++ (2) | 2020.01.04 |
댓글