728x90
반응형
문제 : 124 나라의 숫자
풀이 방법
3진법으로 풀면 되는거 아닌가 했는데 0이 없는 나라였다...
124 나라의 수체계의 3번 째를 3진수의 10으로 맞추려면 3으로 나눴을 때 0이 나오면 4로 만들면 된다
그리고 몫에서 1을 빼면 완전한 4가 된다
조금 더 자세히 보면
10진수 3은 3진수로 바꿀 때 10이 된다
3을 3으로 나눴을 때 나머지가 0, 몫이 1이다.
그럼 여기서 나머지 0을 4로 바꾸고 몫에서 1을 뺀다면?
이렇게 계산을 한 다음, 몫을 쓰고 나머지를 쓰면 04 즉, 4가 된다
(진법 계산을 while문으로 만들 때 while(몫 != 0) 이런식으로 만들게 되는데 0이 되면 반복문을 종료하게 되니 4가 되는거다)
그래서 진법 계산을 할 때 몫 변수를 3으로 나누고 나머지가 0이되면 몫에 3을 나누고 1을 빼주는 것이었다
if문 써도 되는데 질문하기에 어떤 사람이 배열로 진법 자리를 정하길래 좋아보여서 따라해봤다 ㅋㅋㅋ
소스 코드
#include <string>
using namespace std;
string solution(int n) {
string answer = "";
string arr[] = {"4", "1", "2"};
while(n != 0) {
answer = arr[n%3] + answer;
n = (n%3==0) ? (n/3)-1 : n/3;
}
return answer;
}
728x90
반응형
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Level 2, C++] 가장 큰 수 (0) | 2022.07.29 |
---|---|
[프로그래머스 Level 1, C] 직사각형 별찍기 (0) | 2022.07.27 |
[프로그래머스 Level 2, C++] 숫자의 표현 (0) | 2022.07.26 |
[프로그래머스 Level 2, C++] 다음 큰 숫자 (0) | 2022.07.26 |
[프로그래머스 Level 2, C++] 최솟값 만들기 (0) | 2022.07.14 |