3진법 상에서 앞뒤로 다시 뒤집어야 하니 reverse함수는 필요 없다.
뒷 자리수부터 3의 0 제곱, 3의 1 제곱,... 3의 n제곱을 곱해주면
3진법에서 10진법으로 바꿀 수 있다.
풀이1
#include <string>
#include <vector>
#include <cmath>
using namespace std;
string Num(int n){
string str = "";
while(n != 0){
str += to_string(n % 3);
n /= 3;
}
return str;
}
int solution(int n) {
int answer = 0;
string str = Num(n);
int cnt = 0;
for(int i = str.size() - 1; i >= 0; i--){
answer += (str[i] - '0') * pow(3, cnt);
cnt++;
}
return answer;
}
풀이2
#include <string>
#include <vector>
using namespace std;
string Num(int n){
string str = "";
while(n != 0){
str += to_string(n % 3);
n /= 3;
}
return str;
}
// pow함수 구현
int pow(int x, int n){
if(n == 0) return 1;
else if(n == 1) return x;
else return x * pow(x, n - 1);
}
int solution(int n) {
int answer = 0;
string str = Num(n);
int cnt = 0;
for(int i = str.size() - 1; i >= 0; i--){
answer += (str[i] - '0') * pow(3, cnt);
cnt++;
}
return answer;
}
'🍞 Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스][Level1] 나머지가 1이 되는 수 찾기 c++ (0) | 2022.09.02 |
---|---|
[프로그래머스][Level1] 나누어 떨어지는 숫자 배열 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] 같은 숫자는 싫어 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] 가운데 글자 가져오기 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] [1차] 비밀지도 c++ (0) | 2022.09.02 |