[프로그래머스] 3진법 뒤집기
Programmers - [월간 코드 챌린지 시즌1] 3진법 뒤집기
사용 언어 - C++
소요 시간 - 약 20분
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/68935
문제 요약
- 주어진 수를 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++에서 제공하는 라이브러리의 함수를 좀 더 활용해보려고 노력했는데 수식이 간단해져서 좋다.