티스토리 뷰
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
char c[3] = {'4', '1', '2'};
while(n > 0)
{
int r = n % 3;
answer = c[r] + answer;
n /= 3;
if(r == 0) n--;
}
return answer;
}
3진법 계산을 응용한 문제이다.
이번 문제는 기존의 0, 1, 2가 아닌 아래와 같이 4, 1, 2를 나머지로 갖는다.
n%3==0 : 4 / n%3==1 : 1 / n%3==2 : 2
따라서 이를 토대로 answer에 값을 더해나가게 된다.
그리고 3으로 나누어 떨어진 경우를 추가적으로 체크해주어야 한다.
124 나라의 숫자에는 0이 없고, 대신 4를 사용해야 하기 때문이다.
이를 위해 3으로 나눈 몫의 값을 추가로 1을 빼주면 해결된다.
기존에 구한 4와 1을 빼준 몫을 기준으로 계산하여 더해주면 원하는 최종 값을 얻게 된다.
<예시 6>
6%3 = 몫 2, 나머지 0
다음 n = 2-1 = 1
1%3 = 몫 0, 나머지 1
-> 1더해줌
'프로그래머스 > 2레벨' 카테고리의 다른 글
[프로그래머스 2레벨] 미로 탈출 (C++) (0) | 2025.02.23 |
---|---|
[프로그래머스 2레벨] 숫자 카드 나누기 (C++) (0) | 2025.02.19 |
[프로그래머스 2레벨] 호텔 대실 (C++) (0) | 2025.02.17 |
[프로그래머스 2레벨] 시소 짝꿍 (C++) (0) | 2025.02.15 |
[프로그래머스 2레벨] 전력망을 둘로 나누기 (C++) (0) | 2025.02.14 |