1. 문제 설명
8진수 -> 2진수
2. 접근 방식
8진수 → 2진수로 변환하는 방법은 다음과 같다.
ⓐ 8진수 각 자리를 떼어낸다.
ⓑ 각 자릿수를 2진수로 바꾼다. (한자리는 0~8 사이의 수임으로 2진수로 바꿀 시, 2진수는 무조건 3자리 이하임)
ⓒ 2진수로 바꾼 수를 이어 붙인다. (이때, 모든 2진수는 3자리를 차지해야한다. 아니면 전혀 상관 없는 이상한 수가 된다.)
3. 코드 분석
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < s.length(); i++){
if(i==0){
sb.append(Integer.toBinaryString(Character.getNumericValue(s.charAt(i))));
}else {
int temp = Character.getNumericValue(s.charAt(i));
if(temp <= 1){
sb.append(0).append(0).append(Integer.toBinaryString(temp));
}else if(temp < 4){
sb.append(0).append(Integer.toBinaryString(temp));
}else {
sb.append(Integer.toBinaryString(temp));
}
}
}
System.out.println(sb);
}
}
Character.getNumericValue(char value)
: char → int (자릿수 하나씩 떼어내서 생각하기용)
Integer.toBinaryString(int value)
: int → 2진수로 표현된 String 값
만약 2진수로 변환했을 때, 자릿수가 3개가 안되면 3개가 되도록 앞에 0을 추가로 넣었다. 다만 맨 앞 자리수는 0을 넣으면 안되므로 제외했다.
4. 성장 하기
10진수를 다양한 진법으로 변환 시켜주는 java의 함수들을 알아보자.
// 10 -> 2
Integer.toBinaryString(a);
Integer.toString(a,2); // 2번째 인자로 바꾸려는 진법을 숫자로 명시해주면 된다.
// 10 -> 8
Integer.toOctalString(a);
Integer.toString(a,8);
// 10 -> 16
Integer.toHexString(a);
Integer.toString(a,16);
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[백준] 구간 합 구하기 5 쉬운 풀이, 여러가지 풀이 java (0) | 2024.06.22 |
---|---|
백준 11720_숫자의합 Java 여러가지 풀이! (0) | 2024.06.22 |
[프로그래머스] 42888. 오픈채팅방 JAVA 풀이 설명 (0) | 2024.06.19 |
[프로그래머스] 1845. 폰켓몬 JAVA 해체 분석 (0) | 2024.06.19 |
[프로그래머스] 12981 영어 끝말잇기 (0) | 2024.06.17 |