๋ฌธ์
8์ง์๊ฐ ์ฃผ์ด์ก์ ๋, 2์ง์๋ก ๋ณํํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ 8์ง์๊ฐ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์์ ๊ธธ์ด๋ 333,334์ ๋์ง ์๋๋ค.
3 1 4
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฃผ์ด์ง ์๋ฅผ 2์ง์๋ก ๋ณํํ์ฌ ์ถ๋ ฅํ๋ค. ์๊ฐ 0์ธ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ๋ฐ๋์ 1๋ก ์์ํด์ผ ํ๋ค.
์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ์ถ | ์ ๋ต | ๋งํ ์ฌ๋ | ์ ๋ต ๋น์จ |
---|---|---|---|---|---|
1 ์ด | 256 MB | 44329 | 14980 | 12445 | 35.894% |
https://www.acmicpc.net/problem/1212
ํ์ด
์ฝ๋
์ฒซ๋ฒ์งธ์๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class _8์ง์์2์ง์ {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Stack<Long> stack = new Stack<>();
String str = br.readLine();
int length = str.length();
long x = Long.parseLong(str, 8);
while (x != 0){
stack.add(x%2);
x /= 2;
}
while (!stack.isEmpty()){
sb.append(stack.pop());
}
System.out.println(sb);
}
}
๋ฐํ์์๋ฌ๊ฐ ๋ฐ์ํ๋ค. numberFormat
...! ์๋ํ๋ฉด ์
๋ ฅ์ ๊ธธ์ด๋ 333,334 ๊น์ง ์ด๋ฏ๋ก, ํ์ฐธ๋ชป๋ฏธ์น๋ ๋ฒ์์์ long๋ฒ์๋ฅผ ์ด๊ณผํ๋๋ฐ, ๋ด๊ฐ ํผ ๋ฐฉ์์์ ํ์ธํด๋ณด๋ฉด long x = Long.parseLong(str, 8);
์ฌ๊ธฐ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
์ญ์ ์ซ์๋ณํ์์ด String๋ง์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํ๋๊ฒ์ด๋ค.
๋๋ฒ์งธ ์๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class _8์ง์์2์ง์ {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String str = br.readLine();
for(int i=0; i<str.length(); i++){
//str์ ์๋ผ์ค๋ค.
int num = str.charAt(i) - '0';
String numStr = binaryNumber(num);
if(numStr.length() == 3){ //binary๋ก ๋ณํํ ๊ฐ์ด 3์๋ฆฌ์ธ๊ฒฝ์ฐ
sb.append(numStr);
} else if (numStr.length() == 2) { //binary๋ก ๋ณํํ ๊ฐ์ด 2์๋ฆฌ์ธ๊ฒฝ์ฐ, ์์ 0์ถ๊ฐ
sb.append("0").append(numStr);
}else if(numStr.length() == 1){ //binary๋ก ๋ณํํ ๊ฐ์ด 1์๋ฆฌ์ธ๊ฒฝ์ฐ, ์์ 00์ถ๊ฐ
sb.append("00").append(numStr);
}
}
if(str.equals("0")){ //str์ด 0์ธ๊ฒฝ์ฐ StringIndexOutOfBounds ์๋ฌ ๋ฐ์ํ์ฌ 0์
๋ ฅ์ 0์ถ๋ ฅ
System.out.println(0);
return;
}
while (sb.charAt(0) == '0'){ //sb์ ์ฒซ๋ฒ์งธ๊ฐ์ด 0์ธ๊ฒฝ์ฐ 1์ด ๋์ฌ๋๊น์ง ์ ๊ฑฐ
sb.deleteCharAt(0);
}
System.out.println(sb);
}
public static String binaryNumber(int n){ //2์ง์๋ก ๋ณํํ๋ ์ฝ๋
if(n == 0) return "000"; //0์ด ์
๋ ฅ๋๋๊ฒฝ์ฐ์ 000์ ๋ฐํ
Stack<Integer> stack = new Stack<>();
String str = "";
while (n > 0){
stack.add(n%2);
n /= 2;
}
while (!stack.isEmpty()){
str += stack.pop();
}
return str;
}
}