๋ฌธ์
-2์ง๋ฒ์ ๋ถํธ ์๋ 2์ง์๋ก ํํ์ด ๋๋ค. 2์ง๋ฒ์์๋ 20, 21, 22, 23์ด ํํ ๋์ง๋ง -2์ง๋ฒ์์๋ (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8์ ํํํ๋ค. 10์ง์๋ก 1๋ถํฐ ํํํ์๋ฉด 1, 110, 111, 100, 101, 11010, 11011, 11000, 11001 ๋ฑ์ด๋ค.
10์ง๋ฒ์ ์๋ฅผ ์ ๋ ฅ ๋ฐ์์ -2์ง์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
## ์ ๋ ฅ
์ฒซ ์ค์ 10์ง๋ฒ์ผ๋ก ํํ๋ ์ N์ด ์ฃผ์ด์ง๋ค.
## ์ถ๋ ฅ
-2์ง๋ฒ ์๋ฅผ ์ถ๋ ฅํ๋ค.
๋๋จธ์ง๊ฐ 0๋๋ 1์ด๋์ค๊ฒ ํ๋๊ฒ์ด ํต์ฌ์ธ ๋ฌธ์ ์ด๋ค.
์๋ก -13์ -2์ง์๋ก ๋ณํํ๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด๋ฉด:
- -13 / -2 = 6, ๋๋จธ์ง -1 (10์ง์๋ก -1, -2์ง์๋ก 1)
- 6 / -2 = 3, ๋๋จธ์ง 0 (10์ง์๋ก 0, -2์ง์๋ก 0)
- 3 / -2 = 1, ๋๋จธ์ง -1 (10์ง์๋ก -1, -2์ง์๋ก 1)
- 1 / -2 = 0, ๋๋จธ์ง 1 (10์ง์๋ก 1, -2์ง์๋ก 1)
์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ์ถ | ์ ๋ต | ๋งํ ์ฌ๋ | ์ ๋ต ๋น์จ |
---|---|---|---|---|---|
2 ์ด | 128 MB | 10786 | 5034 | 4140 | 45.700% |
https://www.acmicpc.net/problem/2089
ํ์ด
์ด๋์ ๋ ๋ฌธ์ ๋ ์๊ฒ ๋๋ฐ... ๊ตฌํ์ด ์๋์ ์ธํฐ๋ท์ ์ฐพ์๋ณด์๋ค. ๊ทธ๋ฆฌ๊ณ ์ดํดํ๊ฒ์ ๋ฐํ์ผ๋ก ์ ๋ฆฌํด ๋ณด์๋ค.
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ๋ง์ด๋์ค2์ง์ {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb =new StringBuilder();
int n = Integer.parseInt(br.readLine());
if(n == 0){
System.out.println(0);
}else {
while (n != 0){
int remainder = n % -2;
n /= -2;
if(remainder < 0){ //๋๋จธ์ง๊ฐ 0๋ณด๋ค ์์ผ๋ฉด
remainder += 2; //๋๋จธ์ง + 2 n++; //๋ชซ + 1 }
sb.insert(0,remainder);
}
System.out.println(sb);
}
}
}
stack์ ์ฌ์ฉํด์ ํธ๋๊ฒ๋ ๊ฐ๋ฅํ ๊ฒ๊ฐ๊ณ ...์ฌ๊ธฐ์๋ StringBuilder.insert()
๋ฅผ ์ด์ฉํ์๋ค. while๋ฌธ์ ๋๋ฉด์ sb.insert(0,remainder);
0๋ฒ index์ remainder๋ฅผ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ด๋ค.