문제 설명
자연수 n이 매개변수로 주어집니다.
n을 3진법 상에서 앞뒤로 뒤집은 후,
이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
문제 풀이
모든 진법은 원하는 수로 값을 나누어 원하는 값 미만이 될 때까지 진행
남은 나머지를 역순으로 그리면 값이 나옴
List 와 Stack 을 사용하여 값 구하기
List 인 경우 값을 역순으로 출력하고, Stack은 pop 하면 역순으로 나오므로 해당 값에 맞게 수식 작성
import java.util.*;
class Solution {
public int solution(int n) {
int answer = 0;
int result = 0;
ArrayList<Integer> list = new ArrayList<>();
Stack<Integer> stack = new Stack<>();
while (n / 3 > 0) {
int temp = n % 3; // 나머지 구하기
list.add(temp);
stack.push(temp); // 나머지를 list 와 stack 에 담기
n /= 3;
}
list.add(n);
stack.push(n); // n 을 3 으로 나눈 값이 0 일 경우 n 에 마지막 남은 값이 있어 해당 값 담기
for (int i = 0, j = list.size() - 1; i < list.size(); i++, j--) {
answer += (int) (list.get(j) * Math.pow(3, i));
}
for (int i = 0; i < stack.size(); i++) {
result += (int) (stack.pop() * Math.pow(3, i));
}
return answer;
}
}
'혼자 코딩 공부하기 > 프로그래머스 코딩테스트' 카테고리의 다른 글
프로그래머스 예산 (2) | 2024.04.08 |
---|---|
프로그래머스 로그인 성공? (0) | 2024.04.08 |
프로그래머스 직사각형 넓이 구하기 (0) | 2024.04.08 |
프로그래머스 캐릭터의 좌표 (0) | 2024.04.07 |
프로그래머스 종이 자르기 (0) | 2024.04.07 |