โ ๋ฌธ์
๋ฌธ์์ด ํํ์ 2์ง์๋ฅผ ์ ๋ ฅ๋ฐ์ 10์ง์๋ก ๋ฐ๊พธ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โ ์ฝ๋
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
int base = 1;
int result = 0;
for (int i = str.length()-1 ; i >= 0; i--) {
if(str.charAt(i) == '1'){
result += base;
}
base *= 2;
}
System.out.println(result);
}
}
โ ์ด์ง์๋ฅผ ์ญ์ง์๋ก ๋ฐ๊พธ๋ ๋ฒ
- ์ด์ง์๋ 0๋๋ 1๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ด์ง์์ ๋งจ ์ค๋ฅธ์ชฝ ๋์๋ฆฌ๋ 2์ 0์ ๊ณฑ์ ๊ฐ์น๋ฅผ ๊ฐ์ง๋ฉฐ, ์ผ์ชฝ์ผ๋ก ๊ฐ์๋ก 2์ 1์ ๊ณฑ, 2์ ๊ณฑ, 3์ ๊ณฑ์ผ๋ก ์๋ฆฌ์ ๊ฐ์น๊ฐ ๋์ด๊ฐ๋ค.
- ์ด์ง์์ ๊ฐ ์๋ฆฌ์ ํด๋นํ๋ ๊ฐ๊ณผ ํด๋น ์๋ฆฌ์ ๊ฐ์น๋ฅผ ๊ณฑํ ํ ๋ชจ๋ ๋ํ๋ค. ์ฌ๊ธฐ์ ์ด์ง์๋ 0๊ณผ 1๋ก๋ง ์ด๋ฃจ์ด์ ธ์๋ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ์ด์ฐจํผ 0์ธ ์๋ฆฌ๋ ์ ๊ฒฝ์ธ ํ์๊ฐ ์๋ค. 0์ ์ด๋ค ๊ฐ์น๋ฅผ ๊ณฑํ๋ 0์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, ์ฐ๋ฆฌ์๊ฒ ์ ์๋ฏธํ ๋ฐ์ดํฐ๋ ์ด์ง์์์ 1์ธ ์๋ฆฌ์ด๋ค.
8์๋ฆฌ ์ด์ง์ ์๋ฆฟ์๋ ํ์ ๋งจ ์์ค์ CharAt(i)์ ์ธ๋ฑ์ค i์ด๋ค.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 |
64*1 + 8*1 + 4*1 + 2*1 + 1 = 77 |
โ ์ถ๋ก ๊ณผ์
- int base = 1; : ์ด์ง์์ ๊ฐ ์๋ฆฌ์ ๊ฐ์น๋ฅผ ๋ํ๋ด๋ ๋ณ์๋ฅผ ์ด๊ธฐํ ํด ์ค๋ค. ์ฌ๊ธฐ์๋ 2์ 0์ ๊ณฑ์ผ๋ก ์ด๊ธฐํ ํด์ฃผ๋ฏ๋ก 1์ด๋ค.
- int result = 0; : ๋ณํ๋ ์ญ์ง์๋ฅผ ์ ์ฅํ ๋ณ์๋ฅผ ์ด๊ธฐํ (๊ฒฐ๊ณผ๊ฐ ์ ์ฅํ ๋ณ์)
- for (int i = str.length()-1 ; i >= 0; i--) { : ์ด์ง์์ ๊ฐ ์๋ฆฌ๋ฅผ ๊ฑฐ๊พธ๋ก ํ์ํ๋ค. ์ฆ 7๋ฒ์ธ๋ฑ์ค์ธ 2์ 0์ ๊ณฑ ์๋ฆฌ๋ถํฐ 0๋ฒ์ธ๋ฑ์ค์ธ 2์ 7์ ๊ณฑ ์๋ฆฌ๋ก ๋์๋ฆฌ๋ถํฐ ์ฝ์ด์จ๋ค(์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฝ์ด์จ๋ค).
- if(str.charAt(i) == '1'){ result += base; } : ํ์ฌ ์์น์ ์ด์ง์๊ฐ 1์ด๋ผ๋ฉด, ํด๋น ์๋ฆฌ์ ๊ฐ์ ๊ฒฐ๊ณผ์ ๋์ ์์ผ ๋ํด์ค๋ค. ์ด๋ ์ด์ง์์ ํด๋น ์๋ฆฌ๊ฐ 1์ธ ๊ฒฝ์ฐ์๋ง ๊ทธ ์๋ฆฌ์ ๊ฐ์น๋ฅผ ๊ฒฐ๊ณผ์ ๋ํด์ค๋ค๋ ๋ป์ด๋ค.
- base *= 2; : ๋ค์ ์๋ฆฌ์ ๊ฐ์น๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด base ๊ฐ์ 2๋ฐฐ๋ก ์ฆ๊ฐ์ํจ๋ค.
- System.out.println(result); : ๋ณํ๋ ์ญ์ง์๋ฅผ ์ถ๋ ฅํ๋ค.