브론즈 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);
}