✔ 3진법 뒤집기
문제 분석하기
숫자를 3진법으로 변환한 후, 뒤에서부터 계산하여 다시 10진법으로 표현한 수를 반환
손으로 풀어보기
- 숫자를 3진법으로 변환하여 리스트에 저장
- 현재 값을 3으로 나눈 값의 나머지 값을 저장하고, 값을 3으로 나눈 값으로 현재 값을 갱신
- 리스트를 뒤에서 부터 계산하며 10진법으로 변환하여 반환
- 3⁰부터 시작하여 곱하기 계산을 통해 10진법으로 변환
슈도코드 작성하기
n(자연수)
answer(n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수)
arr(3진수 변환 값을 담을 리스트)
while(n이 0이 아닐 동안) {
arr.add(n % 3)
n /= 3
}
index(진수 값 인덱스) = 0
for(i -> arr의 길이 -1부터 0까지) {
answer += arr.get(i) * Math.pow(3, index++);
}
answer 반환
코드 구현하기
/**
* 68935) 3진법_뒤집기
*/
public class L044_68935 {
// n(자연수)
public int solution(int n) {
// answer(n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수)
int answer = 0;
// arr(3진수 변환 값을 담을 리스트)
List<Integer> arr = new ArrayList<>();
// n이 0이 아닐 동안
while (n != 0) {
arr.add(n % 3);
n /= 3;
}
// 또는 Integer.parseInt(숫자, 3) 사용 가능
// index(진수 값 인덱스)
int index = 0;
for (int i = arr.size() - 1; i >= 0; i--) {
// 리스트의 값에 3의 index만큼 제곱하여 계산
answer += arr.get(i) * Math.pow(3, index++);
}
// answer 반환
return answer;
}
// 테스트 케이스
public static void main(String[] args) {
L044_68935 solution = new L044_68935();
int n = 45;
int result = solution.solution(n);
System.out.println(result);
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[72410] 신규 아이디 추천 (0) | 2024.01.01 |
---|---|
[70128] 내적 (0) | 2024.01.01 |
[68644] 두 개 뽑아서 더하기 (0) | 2023.12.31 |
[67256] 키패드 누르기 (0) | 2023.12.31 |
[64061] 크레인 인형뽑기 게임 (0) | 2023.12.30 |