https://school.programmers.co.kr/learn/courses/30/lessons/12899
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
10진수 > 3진수 변환을 응용하면 간단
while문을 통해 처음 인풋값인 n을 3으로 나누고, 나머지를 string s 에 집어 넣고..
반복하고 div값이 3보다 작을 시 그 값을 s에 삽입 후 reverse로 s를 뒤집어주면 3진수를 구할 수 있음
하지만 124 나라에서는 0을 사용하지 않고 대신 4를 사용하기 때문에 나머지가 0이 나오는 경우에 대해 조건이 필요
9를 예로 들면, 원래의 3진수 대로 하면 100이 나오지만 124 나라에서는 24가 나옴
즉, 3진수에서의 10의 값을 4로 치환한 것
div%3 == 0 일 경우 몫인 div는 -1, 나머지 0은 4로 바꾸어 s에 삽입하면 끝
마지막의 div값이 0일 경우 맨 앞자리의 0을 제거하기 위해 div!=0 일 경우에만 삽입 후 reverse
string solution(int n) {
string s = "";
int div = n;
int res = 0;
while (div>=3) {
res = div % 3;
div /= 3;
if (res == 0) {
div -= 1;
res = 4;
}
s += to_string(res);
}
if(div!=0)
s += to_string(div);
reverse(s.begin(), s.end());
return s;
}
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[구름] 뒤통수가 따가워 C++ (0) | 2023.07.07 |
---|---|
[구름] 현대모비스 예선-주차시스템 C++ (0) | 2023.07.07 |
[프로그래머스] 올바른 괄호 C++ (0) | 2022.08.14 |
[프로그래머스] 같은 숫자는 싫어 C++ (0) | 2022.08.14 |
[프로그래머스] 주식가격 C++ (0) | 2022.08.14 |