728x90
반응형
핵심 문제와 예는 위와 같다. 자연수 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 |