[백준] 1212번 8진수 2진수

Kim Ji Eun·2022년 1월 11일
0

난이도

브론즈 3

문제

https://www.acmicpc.net/problem/1212

코드


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// 1212번 8진수 2진수
public class boj_4_1212 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        String N = br.readLine();
        for (int i = 0; i < N.length(); i++) {
            String a = Integer.toBinaryString(N.charAt(i) - '0'); // 문자인 숫자를 숫자로 바꿔줌
            if (a.length() == 2 && i != 0) a = "0" + a;
            else if (a.length() == 1 && i != 0) a = "00" + a;
            sb.append(a);
        }
        System.out.println(sb);
    }
}

풀이

10진수를 2진수로 변경할 때 아래 메소드를 사용하면 된다.

String a = Integer.toBinaryString(숫자)

그러나 아래와 같이 짜게 되면 결과는

String N = br.readLine();
for (int i = 0; i < N.length(); i++) {
    String a = Integer.toBinaryString(N.charAt(i) - '0'); // 문자인 숫자를 숫자로 바꿔줌
    System.out.println(a);
    sb.append(a);
}

입력 : 314
출력 :
11
1
100
111100

위처럼 나오게 되는데 우리는 아래와 같은 결과를 얻고 싶다.
입력 : 314
출력 :
11
001
100
11001100

그러기 위해서
첫번째 입력에 대해서는 0을 제거하지 않기
그 이후의 입력에 대해서는 출력길이가 2일 때 0을 1개 추가, 출력길이가 1일 때 0을 2개 추가하는 작업을 하면 된다.

String N = br.readLine();
for (int i = 0; i < N.length(); i++) {
    String a = Integer.toBinaryString(N.charAt(i) - '0'); // 문자인 숫자를 숫자로 바꿔줌
    if (a.length() == 2 && i != 0) a = "0" + a;
    else if (a.length() == 1 && i != 0) a = "00" + a;
    System.out.println(a);
    sb.append(a);
}
profile
Back-End Developer

0개의 댓글