문제:
https://school.programmers.co.kr/learn/courses/30/lessons/68935#
문제설명: 3진법 수를 뒤집어 10진법으로 표현
로직: 벡터를 이용해서 n의 3진수를 담는다.
for 이용해서 벡터 맨뒤에서부터 맨앞까지 ( 자릿수 - 1 ) 만큼 3의 제곱승하여 남은 n값에 곱해준다.
#include<bits/stdc++.h>
using namespace std;
/*
* 로직: 벡터를 이용해서 n의 3진수를 담는다.
* for 이용해서 벡터 맨뒤에서부터 맨앞까지 ( 자릿수 - 1 ) 만큼 3의 제곱승하여 남은 n값에 곱해준다.
*/
int solution(int n) {
int answer = 0;
vector<long long>vt; // n의 3진수(0, 1, 2)를 담을 vector선언
int mod = 3; // %3
while (n>= 3) { // n이 3이상인 한해서.
int val = n % mod; // modular연산하여 3진수 계산
n = n / mod; // 갱신
vt.push_back(val);
}
n = n % mod; // 2이하인 값 mod계산
vt.push_back(n);
for (int x = vt.size() - 1; x >= 0; --x) {
int ten = 1;
for (int squared = 1; squared < vt.size() - x ; ++squared) {
ten *= mod; // 3의 n승을 통해 10진수로 만듦.
}
answer += vt[x] *ten;
}
return answer;
}
int main(void) {
cout<<solution(45);
}
'PS > 프로그래머스' 카테고리의 다른 글
네트워크(V) (0) | 2023.08.11 |
---|---|
타겟 넘버 (0) | 2023.08.10 |
[카카오 인턴] 키패드 누르기 [V] (0) | 2023.07.29 |
달리기 경주(O) (0) | 2023.07.28 |
연속된 부분 수열의 합(V) (0) | 2023.07.22 |