문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
n | result |
45 | 7 |
125 | 229 |
입출력 예 #1
답을 도출하는 과정은 다음과 같습니다.
n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현
n(10진법) | n(3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
45 | 1200 | 0021 | 7 |
따라서 7을 return 해야 합니다.
<내가 푼 풀이>
stack이랑 math.pow() 사용해서 해결
import java.util.Stack;
class Solution {
public int solution(int n) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
while(n!=0){
stack.push(n%3);
n/=3;
}
int size = stack.size();
for(int i = 0; i<size; i++){
int s = stack.peek();
answer += (s * Math.pow(3, i));
stack.pop();
}
return answer;
}
}
나름 간단하게 풀었다고 생각했는데...
더 짧게 구현하신 분이 오백명..ㅠㅠ 이렇게 배워가는거지 뭐...
<다른 사람의 풀이>
class Solution {
public int solution(int n) {
String a = "";
while(n > 0){
a = (n % 3) + a;
n /= 3;
}
a = new StringBuilder(a).reverse().toString();
return Integer.parseInt(a,3);
}
}
엄청 간단하게 구현이 가능했다...
처음부터 문자열로 계산을 하고
stringbuidler 클래스와 reverse() 메소드를 이용해서 문자열 반전
Integer.parseInt() 함수를 이요해서 3진법을 10진법으로
아직 한참 모자르구나
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 만들기 (JAVA/자바) (0) | 2023.07.24 |
---|---|
[프로그래머스] 코딩테스트 연습 - 두 개 뽑아서 더하기 (JAVA/자바) (0) | 2022.02.13 |
[프로그래머스] 코딩테스트 연습 - 문자열 압축 (JAVA/자바) (0) | 2022.02.13 |
프로그래머스 코딩테스트 연습 - 완주하지 못한 선수 (JAVA) (0) | 2022.02.11 |
프로그래머스 코딩테스트 연습 - 음양 더하기 (JAVA) (0) | 2022.02.11 |