728x90
반응형
알고리즘을 풀면서 한 번 씩 등장하는 자바 진법 변환 문제와 관련하여 정리해 보고자 한다.
잊기 쉬워 정리하는 자바 진법 변환 문제 !!
✅ 2진법, 8진법, 16진법은 변환 메서드가 존재한다.
int num = 907;
String binNum = Integer.toBinaryString(num);
System.out.println("2진법 = " + binNum); // 2진법 = 1110001011
String octNum = Integer.toOctalString(num);
System.out.println("8진법 = " + octNum); // 8진법 = 1613
String hexNum = Integer.toHexString(num);
System.out.println("16진법 = " + hexNum); // 16진법 = 38b
➕ 지정된 형식이 있는 경우
더보기
지정된 형식에 맞춰 출력을 해야 하는 경우에는 String.format 메서드를 통해 다음과 같이 출력할 수 있다.
String formattedNum = String.format("%8s", binNum).replace(" ", "0");
System.out.println("지정된 형식에 맞춰 출력 = " + formattedNum);
//지정된 형식에 맞춰 출력 = 1110001011
하지만 알고리즘 문제에서는 2, 8, 16 진수 이외 n진수로 변환하도록 주어지는 경우가 많기 때문에 위의 메서드들을 사용할 수 없다. 또한, 매개변수로 n 이 주어진다면 이를 해결할 수 없기 때문에 n 진수로 변환하는 방법까지 알아야 하는 경우가 생긴다.
10진수 n 진수로 변환하기
Integer.toString(int i, int radix) 메서드를 사용하면 쉽게 n진수로 변환할 수 있다.
int num = 907;
for(int i = 2 ; i < 10 ; i++) {
String result = Integer.toString(num, i);
System.out.println( "10진수 " + num + "은 " + i + "진수로 " + result);
}
//10진수 907은 2진수로 1110001011
//10진수 907은 3진수로 1020121
//10진수 907은 4진수로 32023
//10진수 907은 5진수로 12112
//10진수 907은 6진수로 4111
//10진수 907은 7진수로 2434
//10진수 907은 8진수로 1613
//10진수 907은 9진수로 1217
n진수에서 10진수로 변환하기
반대로 n 진수에서 다시 10 진수로 변환할 때는 Integer.pareseInt(String s, int radix) 메서드를 사용하면 된다.
String s = "32023";
int n = Integer.parseInt(s, 4);
System.out.println( "4진수 " + s + "는 " + "10진수로 "+ n );
// 4진수 32023는 10진수로 907
📖 참고자료
728x90
반응형
'LANGUAGE > JAVA' 카테고리의 다른 글
[알고리즘] 프로그래머스 삼각 달팽이 (레벨 2) / 자바 java 풀이 (1) | 2024.06.12 |
---|---|
[알고리즘] 프로그래머스 교점에 별그리기 (레벨 2) / 자바 java 풀이 (1) | 2024.06.11 |
[JAVA] 알고리즘 - 동적계획법(DP, Dynamic Programming) 백준 11726번 2xn 타일링 (0) | 2024.03.21 |
[JAVA] JDK, JRE란 무엇인가? JDK와 JRE의 차이점? (1) | 2024.01.09 |
[JAVA] 자바 11에서 17로 버전 업그레이드 (0) | 2024.01.08 |