문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
Step1. 문제분석
3진법을 도출해내는 방법을 알면 편할거같다.
입력받는 n 값에서 3만큼 나눈 나머지 값을 answer에 넣고 n값에 다시 3을 나눠준다.
이렇게 계속 반복하며 3진법의 값을 도출해내고
return을 할때 (answer, 3) 를 통해 3진법 재변환을 통해 값을 출력한다.
Step2. 문제풀이 코드
public class Solution {
public int solution(int n) {
String answer = "";
while(n >= 3) {
answer += n % 3;
n /= 3;
}
answer += n;
return Integer.parseInt(answer, 3);
}
}
Step3. 다른 사람의 풀이 코드
class Solution {
public int solution(int n) {
int answer = 0;
String str = "";
while(n>0)
{
int r = n%3;
n = n / 3;
str = r + str;
}
System.out.println(str);
for(int i=0; i<str.length(); i++)
{
answer += Math.pow(3,i) * (str.charAt(i) - '0');
}
return answer;
}
}
'Java > 알고리즘' 카테고리의 다른 글
[프로그래머스/알고리즘] 같은 숫자는 싫어 (자바/Java) (0) | 2022.11.28 |
---|---|
[프로그래머스/알고리즘] 최소직사각형 (자바/Java) (0) | 2022.11.27 |
[프로그래머스/알고리즘] 하샤드 수 (자바/Java) (1) | 2022.11.25 |
[프로그래머스/알고리즘] 콜라츠 추측(자바/Java) (0) | 2022.11.24 |
[프로그래머스/알고리즘] 제일 작은 수 제거하기 (자바/Java) (0) | 2022.11.24 |
댓글