1. 문제
2. 문제 해결 논리
- 문제 이해
- 주어진 것
- int n // 10진법으로 주어진 수
- 요구되는 것
- int answer // 3진법으로 바꾸고 역순 정렬 후, 10진법으로 변환한 수
- 주어진 것
- 데이터 구조 결정
- String, Integer, StringBuilder 클래스의 메서드 사용
- StringBuilder와 반복문을 사용
- 알고리즘 설계
- String, Integer, StringBuilder 클래스의 메서드
- Integer.toString을 이용한 10진법 -> n진법 변환
- StringBuilder를 이용한 역순 정렬
- Integer.parseInt를 이용한 n진법 -> 10진법 변환
- StringBuilder와 반복문
- String, Integer, StringBuilder 클래스의 메서드
3. 코드 구현
3-1. String, Integer, StringBuilder 클래스
class Solution {
public int solution(int n) {
//Integer.toString 메서드로 10진법 -> 3진법 변환
String ternary = Integer.toString(n, 3);
//StringBuilder의 reverse메서드로 역순 정렬
String reversedTernary = new StringBuilder(ternary).reverse().toString();
//Integer.parseInt 메서드로 3진법 -> 10진법 변환
int result = Integer.parseInt(reversedTernary, 3);
return result;
}
}
3-2. StringBuilder와 반복문
class Solution {
public int solution(int n) {
StringBuilder ternary = new StringBuilder();
//StringBuilder에 3진법 저장
while (n > 0) {
ternary.append(n % 3);
n /= 3;
}
int result = 0;
int factor = 1;
//StringBuilder의 마지막 요소부터 10진법으로 변환
for (int i = ternary.length() - 1; i >= 0; i--) {
result += (ternary.charAt(i) - '0') * factor;
factor *= 3;
}
return result;
}
}
* Reference
https://school.programmers.co.kr/learn/courses/30/lessons/68935#qna
반응형
'PS > Programmers' 카테고리의 다른 글
[level1, Character] 시저 암호 (1) | 2023.03.24 |
---|---|
[level1, index] 이상한 문자 만들기 (0) | 2023.03.23 |
[level1, Stack/Queue] 같은 숫자는 싫어 (0) | 2023.03.20 |
[level1, 유클리드 호제법] 최대공약수와 최소공배수 (0) | 2023.03.19 |
[level1, array] 행렬의 덧셈 (0) | 2023.03.19 |