728x90
코딩테스트 연습 - 3진법 뒤집기 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수
programmers.co.kr
🔎 문제 설명
10진법을 3진법으로 바꾸고 거꾸로 뒤집은다음 10진법으로 표현해라!
🔎 풀이 과정
n을 n1에 저장하고, 나눠지는 횟수를 카운트 한다.
그리고 카운트한 만큼 나눠주면서 3의 거듭제곱과 그 나머지를 곱해주는 방식!
근데 먼가....음....
다른사람들 풀이보니까 스택쓰면 더 편하게 했을 거같다.
코드가 중복되니까 별로 안좋은 코드같다.
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
int n1 = n;
int cnt = 0;
while (n) {
n /= 3;
cnt++;
}
for (int i = cnt - 1; i >= 0; i--) {
int k = n1 % 3;
answer += k * pow(3, i);
n1 /= 3;
}
return answer;
}
728x90