
이전문제 와 반대문제다. 모르겠으면 링크 참조.
각 자릿수를 떼어 3자리의 2진수로 변환해준뒤, 하나씩 입력해주면 된다.
변환시 제일 앞자리 0은 없어진다는 점에 주의.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringBuilder sb = new StringBuilder();
if (str.equals("0")) {
sb.append("0"); // 입력값이 0인 경우 그대로 끝.
} else {
int first = str.charAt(0)-48; // 8진수 첫 자릿수 값 선언.
// 8진수 첫 자릿수의 2진법 변환시 자릿수를 따져준다.
if (first>=4) {
sb.append(eightToTwo(str.charAt(0)));
} else if (first>=2) {
sb.append(eightToTwo(str.charAt(0)).substring(1));
} else {
sb.append("1");
}
for (int i=1; i<str.length(); i++) {
sb.append(eightToTwo(str.charAt(i)));
}
}
System.out.println(sb);
}
static String eightToTwo(int ch) {
StringBuilder sb = new StringBuilder();
int ch2 = ch-48; // 받은 값은 사실상 char값이므로, int로 변환해준다.
if (ch2/4!=0) {
sb.append("1");
ch2-=4;
} else {
sb.append("0");
}
if (ch2/2!=0) {
sb.append("1");
ch2-=2;
} else {
sb.append("0");
}
sb.append(ch2);
return sb.toString();
}
}'백준 문제풀이' 카테고리의 다른 글
| 17103. 골드바흐 파티션 (자바, Java) (0) | 2022.11.22 |
|---|---|
| 2089. -2진수 (자바, Java) (0) | 2022.11.22 |
| 1373. 2진수 8진수 (자바, Java) (0) | 2022.11.22 |
| 17087.숨바꼭질 6 (자바, Java) (0) | 2022.11.22 |
| 9613. GCD 합 (자바, Java) (0) | 2022.11.22 |