728x90
내 풀이
- 모든 진수는 십진수를 해당 진법 수로 나눈 나머지를 일의자리부터 차례로 넣어 구할 수 있다. (주어진 십진수는 몫으로 갱신 필요)
- 나머지를 순서대로 push하면 일의자리부터 넣었기 때문에 역순으로 꺼내쓸 수 있다.
- v[i]와 곱해줘야 하는 거듭제곱의 증감이 달라 cnt를 따로 선언해줬는데, 이게 싫다면 reverse(v.begin(), v.end())를 해서 사용해도 된다.
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int solution(int n) {
int answer = 0;
vector<int> v;
while (n != 0) {
v.push_back(n % 3);
n /= 3;
}
int cnt = v.size()-1;
for (int i = 0; i < v.size(); i++) {
answer += v[i] * pow(3, cnt--);
}
return answer;
}
'[C_C++]코딩테스트 연습 > [프로그래머스] level 1' 카테고리의 다른 글
[C++] 프로그래머스 - 다트 게임 (0) | 2021.07.21 |
---|---|
[C++] 프로그래머스 - 비밀지도 (0) | 2021.07.21 |
[C++] 프로그래머스 - 실패율 (pair, sort - bool) (0) | 2021.07.18 |
[C++] 프로그래머스 - 숫자 문자열과 영단어 (0) | 2021.07.16 |
[C++] 프로그래머스 - 약수의 개수와 덧셈 (0) | 2021.07.14 |