프로그래머스 코딩테스트 3진법 뒤집기
2022. 10. 2. 21:03 - DoosanBaek
언어 : Java
문제번호 29번
문제 설명 : 문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를
return 하도록 solution 함수를 완성해주세요.
제한사항- n은 1 이상 100,000,000 이하인 자연수입니다.
n | result |
45 | 7 |
125 | 229 |
입출력 예시 설명
입출력 예시 #1
- 답을 도출하는 과정은 다음과 같습니다.
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
45 | 1200 | 0021 | 7 |
- 따라서 7을 return 해야 합니다.
입출력 예시 #2
- 답을 도출하는 과정은 다음과 같습니다.
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
125 | 11122 | 22111 | 229 |
- 따라서 229를 return 해야 합니다.
Solution.java
class Solution {
public int solution(int n) {
int answer;
String ternary = "";
StringBuilder sb = new StringBuilder();
while (n != 0) {
ternary = (n % 3) + ternary;
n /= 3;
}
ternary = sb.append(ternary).reverse().toString();
answer = Integer.parseInt(ternary, 3);
return answer;
}
}
답안 도출 과정 :
1. 10진법 - > 3진법
while 조건문을 이용한다. 3으로 나눈 나머지를 3진법(ternary)에 넣는다 .몫은 n 으로 넣고 0 이되면 while문 탈출시킨다.
2. 3진법 수 reverse
StringBuilder 클래스 reverse() 함수 이용, 문자열 반전시킨다.
3. (reversed)3진법 수 -> 10진법
반전된 3진법 - > 10진법
Integer.parseInt() 함수 이용 해서 다시 10진법수로 바꾼다.
'알고리즘' 카테고리의 다른 글
[백준] 11945번 : 뜨거운 붕어빵 - JAVA (0) | 2024.11.13 |
---|---|
[백준] 2445번 : 별 찍기 - JAVA (0) | 2024.11.13 |
[백준] 2475번 : 검증수 -JAVA (0) | 2024.11.13 |
[백준] 1330번 : 두 수 비교하기 - JAVA (0) | 2024.11.13 |
프로그래머스 코딩테스트 문제 28번 하샤드 수 (1) | 2022.09.30 |
프로그래머스 코딩테스트 27번 콜라츠 추측 (0) | 2022.09.30 |
프로그래머스 코딩테스트 26번 제일 작은 수 제거하기 (0) | 2022.09.29 |
프로그래머스 코딩테스트25번 정수 제곱근 판별 (0) | 2022.09.29 |