안녕 세상아,

[프로그래머스/c++] Lv1 3진법 뒤집기 본문

프로그래머스

[프로그래머스/c++] Lv1 3진법 뒤집기

돈 많은 백수가 되고싶다 2024. 8. 21. 20:48

https://school.programmers.co.kr/learn/courses/30/lessons/68935

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 10진법 3진법으로 바꾸기

2. 3진법 10진법으로 바꾸기

3. 1번 함수를 사용해서 3진법으로 바꾼 후 reverse 함수 사용

4. reverse된 3진법을 2번 함수에 넣어서 결과 도출

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

using namespace std;

string tenToThree(int n){
    if(n == 0)
        return "0";
    string bit="";
    while(n != 0){
        bit += to_string(n % 3);
        n = n / 3;
    }
    reverse(bit.begin(), bit.end());
    return bit;
}
int threeToTen(string str){
    int ans = 0;
    for(int i = 0; i < str.size(); i++){
        int x = str[i] - '0';
        ans += x * pow(3, str.length() - 1 - i);
    }
    return ans;
}
int solution(int n) {
    int answer = 0;
    
    string three=tenToThree(n);
    reverse(three.begin(),three.end());
    
    answer = threeToTen(three);
    return answer;
}