프로그래머스(Programmers)
프로그래머스 3진법 뒤집기 C++
cosmohoo
2022. 1. 13. 16:41
반응형
입출력 예 설명
입출력 예 #1
- 답을 도출하는 과정은 다음과 같습니다.
n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현
45 | 1200 | 0021 | 7 |
- 따라서 7을 return 해야 합니다.
입출력 예 #2
- 답을 도출하는 과정은 다음과 같습니다.
n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현
125 | 11122 | 22111 | 229 |
- 따라서 229를 return 해야 합니다.
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
vector<int> threeNo; //3진법표현
int tenNo = n;
while(tenNo)
{
threeNo.push_back(tenNo%3);
tenNo/=3;
}
int mul=1;
for(int i=threeNo.size()-1; i>=0; i--)
{
answer += threeNo[i]*mul;
mul*=3;
}
return answer;
}
=> 3진법으로 변환하는 방법은 3으로 나누면서 계속 threeNo에 push하면 됩니다.
=> 이후 3진법을 거꾸로 하라고 하였지만 굳이 그럴 필요는 없습니다.
=> 만들어진 3진법을 뒤에서부터 거꾸로 3진법을 10진법으로 바꾸는 계산을 해주면 됩니다.
반응형