Coding Test/Java Coding Test
[프로그래머스 / 자바] - 3진법 뒤집기
nam_ji
2024. 2. 19. 00:13
3진법 뒤집기
문제
- 정수 n이 매개변수로 주어집니다.
- n을 3진법 변환 후
- 3진법을 뒤집은 후
- 다시 10진법으로 변환하는 문제입니다.
테스트 (인텔리제이)
- Integer 클래스의 toString을 이용하여 각 진법별로 변환이 가능하여 toString 메서드를 사용하여 변환했습니다
* String 타입으로 값을 담아줘야 합니다. - 이후 StringBuilder의 reverse를 이용하여 3진법으로 변환해준 값을 뒤집어 줍니다.
- 3진법에서 10진법으로 변환하기 위해 String 타입으로 변환하고
- Integer 클래스의 parseInt 메서드를 이용하여 3진법을 10진법으로 변환하면 됩니다.
- 두번째 풀이도 첫번째랑 같은 풀이지만 더 복잡하게 풀어둔 제 풀이입니다.
- 세변째는 간단하고 좋은 풀이 같아서 가져오기는 했지만 해석이 필요한 정답입니다.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
/*
정수 n이 매개변수로 주어집니다.
1. n을 3진법으로 변환
2. 3진법으로 변환된 n 뒤집기
3. 뒤집어진 n을 10진법으로 변환
초기 n은 10진법입니다.
45 > 7
45 -> 1200 -> 0021 -> 7
125 > 229
125 -> 11122 -> 22111 -> 229
*/
int n = 45;
String third = Integer.toString(n,3);
StringBuilder sb = new StringBuilder(third);
String reverse = sb.reverse().toString();
System.out.println(Integer.parseInt(reverse, 3));
// String threeN = Integer.toString(n, 3);
// StringBuilder reverse = new StringBuilder();
// for (int i = threeN.length() -1; i >= 0; i--) {
// reverse.append(threeN.charAt(i));
// }
// int newN = Integer.parseInt(String.valueOf(reverse), 3);
// System.out.println(newN);
// String a = "";
//
// while (n > 0) {
// a = (n % 3) + a;
// n /= 3;
// }
// a = new StringBuilder(a).reverse().toString();
// System.out.println(Integer.parseInt(a, 3));
}
}
프로그래머스 코드
class Solution {
public int solution(int n) {
String third = Integer.toString(n,3);
StringBuilder sb = new StringBuilder(third);
String reverse = sb.reverse().toString();
return Integer.parseInt(reverse, 3);
// String threeN = Integer.toString(n, 3);
// StringBuilder reverse = new StringBuilder();
// for (int i = threeN.length() -1; i >= 0; i--) {
// reverse.append(threeN.charAt(i));
// }
// int newN = Integer.parseInt(String.valueOf(reverse), 3);
// return newN;
// String a = "";
//
// while (n > 0) {
// a = (n % 3) + a;
// n /= 3;
// }
// a = new StringBuilder(a).reverse().toString();
// return Integer.parseInt(a, 3);
}
}