3진법 뒤집기

NJW·2021년 8월 24일
0

코테

목록 보기
74/170

들어가는 말

10진법을 3진법으로 바꾼뒤 앞뒤 반전을 주고 다시 십진법으로 바꿔주는(ㅋㅋㅋㅋㅋㅋ) 문제이다.

코드 설명

3진법을 구하는 건 거의 처음이었지만, 비밀지도때 2진법 구했던 거처럼 3으로 나눠서 나머지는 넣어주고 값은 계속 3으로 나눠주면 된다. 문제는 앞뒤 반전을 주라 했지만, 배열은 어차피 제일 먼저 들어간 값이 제일 앞에 있기 때문에 reverse를 해줄 필요는 없다.
다시 10진법으로 돌릴 때, 수식을 잘못 써준 거 빼고 복잡한 부분은 없었다. 추가로 while문에서는 조건이 n은 0보다 크다이다.

코드

#include <string>
#include <vector>
#include <cmath>

using namespace std;

int solution(int n) {
    int answer=0;
    int j=0;
    vector<int> v;
    
    while(n > 0){
        v.push_back(n%3);
        n = n/3;
    }
    
    for(int i = v.size()-1; i >= 0; i--){
        answer = answer+v[i]*pow(3, j);
        j++;
    }

    return answer;
}
profile
https://jiwonna52.tistory.com/

0개의 댓글