문제 : 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하시오!
제한사항 :
- n은 1 이상 100,000,000 이하인 자연수입니다.
풀이 :
package com.company;
import java.util.Arrays;
import java.util.Stack;
public class TernaryFlip {
public static void main(String[] args) {
System.out.println(solution(45));
System.out.println(solution(125));
}
public static int solution(int n) {
int answer = 0;
int division;
int lastValue;
Stack<Integer> s = new Stack<Integer>();
while(true)
{
division = n / 3;
lastValue = n % 3;
s.push(lastValue);
n = division;
if (division == 0) break;
}
long s_length = s.stream().count();
for (int i = 0; i < s_length; i++)
{
answer+= s.pop() * Math.pow(3,i);
}
return answer;
}
}
'알고리즘 > JAVA' 카테고리의 다른 글
[JAVA] 124 나라의 숫자 - 프로그래머스 (0) | 2020.10.22 |
---|---|
[JAVA] 소수찾기 - 프로그래머스 (0) | 2020.10.21 |
[JAVA] 콜라츠 추측 - 프로그래머스 (0) | 2020.10.21 |
[JAVA] 제일 작은수 제거하기 - 프로그래머스 (0) | 2020.10.21 |
[JAVA] 최대공약수, 최대공배수 - 프로그래머스 (0) | 2020.10.21 |