[프로그래머스] 3진법 뒤집기



Programmers - [월간 코드 챌린지 시즌1] 3진법 뒤집기




사용 언어 - C++

소요 시간 - 약 20분




문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/68935




문제 요약

  1. 주어진 수를 3진법으로 표현
  2. 3진법으로 표현된 수를 앞뒤 반전시킴
  3. 반전된 3진법 수를 10진법으로 다시 표현




최종 코드

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

using namespace std;

int solution(int n) {
    int answer = 0;
    vector<int> temp;
    
    while(n != 0)
    {
        temp.push_back(n % 3);
        n /= 3;
    }
    
    reverse(temp.begin(), temp.end());
    
    for(int i = 0; i < temp.size(); i++)
    {
        answer += temp[i] * pow(3, i);
    }
    
    return answer;
}




트러블 슈팅

  • reverse 함수를 사용하기 위한 algorithm 헤더, pow를 사용하기 위한 cmath 헤더. 헤더를 자꾸 빼먹는 실수를 한다




문제 풀이 후 소감

  • 어제 Lv2 풀다가 Lv1 푸니까 왜 Lv2가 Lv2인지 조금 더 실감이 된다.
  • C++에서 제공하는 라이브러리의 함수를 좀 더 활용해보려고 노력했는데 수식이 간단해져서 좋다.