๐ 1. ๋ฌธ์ ์ค๋ช
10์ง์๋ฅผ ์ ๋ ฅ๋ฐ์ 2์ง์๋ก ๋ณํํด ๋ฐํํ๋ solution() ํจ์๋ฅผ ๊ตฌํํ์ธ์
์ ์ฝ์กฐ๊ฑด
- decimal์ 1์ด์ 10์ต ๋ฏธ๋ง์ ์์ฐ์
์ ์ถ๋ ฅ ์
decimal | return |
10 | 1010 |
27 | 11011 |
12345 | 11000000111001 |
๐ก 2. ํ์ด ๊ณผ์
10์ง์๋ฅผ 2์ง์๋ก ํํํ๋ ๊ณผ์ ์ ์ด๋ฏธ ์ํ์ ์ผ๋ก ์ฆ๋ช ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ๊ฒ ์ ๋๋ค.
- 10์ง์ N์ 2๋ก ๋๋ ๋๋จธ์ง, ์ฆ %2 ์ฐ์ฐ์ ํ ๊ฐ์ ์ ์ฅํ๊ณ , N์ ๋ค์ 2๋ก ๋๋๋ค.
- ๋ชซ์ด 0์ด ์๋๋ผ๋ฉด ๋๋จธ์ง๋ฅผ ๋ฒ๋ฆฌ๊ณ ๋ค์ 1์ ์ํํ๋ค
- ๋ชจ๋ ๊ณผ์ ์ด ๋๋๊ณ 1์์ ์ ์ฅํ ์๋ฅผ ๋ค๋ถํฐ ์์๋๋ก ๊ฐ์ ธ์ ๋ถ์ธ๋ค.

์๋ฅผ ๋ค์ด ์ญ์ง์ 13์ ์ ๊ณผ์ ๋๋ก 2์ง์๋ก ๋ณํํ๋ ๋ชจ์ต์ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค. 13์ 2๋ก ๋๋์ด๊ฐ๋ฉด์ ๋๋ ๋๋จธ์ง๋ฅผ ์์๋๋ก ์ ์ฅํ ํ, ์ด ๊ณผ์ ์ ๋ชซ์ด 0์ด ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ค. ๋ชซ์ด 0์ด ๋๋ฉด ์ ์ฅํ ๊ฐ์ ๋ค์์๋ถํฐ ์์๋๋ก ์ฝ์ผ๋ฉด 1101์ผ๋ก ์ด์ง์ ๋ณํ์ด ์๋ฃ๋๋ค.
์ด ๋ฌธ์ ๋ ์ ํ์ ์ธ ์คํ ๋ฌธ์ ์ด๋ค. ๋๋จธ์ง๋ฅผ ์คํ์ ์๊ณ ํ๋์ฉ ๊บผ๋ด๋ฉด ๋ต์ด ๋์จ๋ค.

์ด๊ธฐ์๋ 13์ผ๋ก ์์ํ๋ค. 13์ 2๋ก ๋๋๊ณ ๋๋จธ์ง๋ฅผ ์คํ์ ํธ์ํ๋ค. 13์ 2๋ก ๋๋ ๋๋จธ์ง๊ฐ 1์ด๊ธฐ ๋๋ฌธ์ 1์ ์คํ์ Push ํ๋ค.

๋ค์์ 13์ 2๋ก ๋๋ ๋ชซ 6์ ๋ค์ 2๋ก ๋๋๋ค. ๋๋จธ์ง๊ฐ 0์ด๊ธฐ ๋๋ฌธ์ 0์ ํธ์ํ๊ณ , 3์ 2๋ก ๋๋ ๋๋จธ์ง๋ 1์ด๊ธฐ ๋๋ฌธ์ 1์ ํธ์ํ๋ค.

๋ง์ง๋ง์ผ๋ก ์ญ์ง์ 13์ ๋ชซ์ด 0์ด ๋ ๋๊น์ง ๋๋ ๊ฒฐ๊ณผ๋ก ์คํ์๋ ๋๋จธ์ง์ธ 1, 0, 1, 1 ์ด ์์๋๋ก ์์ด๊ฒ ๋๋ค.

์ฐ์ฐ์ ๋ค ๊ธ๋ธ ํ์ ์คํ ๋งจ ์์ ์์ธ ๊ฐ๋ถํฐ stack.pop()์ผ๋ก ๊บผ๋ด์ค๋ฉด 13์ ์ด์ง์๋ก ๋ณํํ 1101์ด ๋๋ค.
โญ 3. ์ ๋ต์ฝ๋
public static String solution(int decimal) {
Stack<Integer> stack = new Stack<>(); // ๋๋จธ์ง๋ฅผ ์ ์ฅํ ์คํ
while(decimal != 0) { // ๋ชซ์ด 0์ด ๋ ๋ ๊น์ง ๋ฐ๋ณต
stack.push(decimal % 2); // ๋๋จธ์ง ์คํ์ ๋ฃ๊ธฐ
decimal /= 2; // 2๋ก ๋๋๊ธฐ
}
StringBuilder sb = new StringBuilder();
while(!stack.isEmpty()) {
sb.append(stack.pop()); // ์คํ์ ์๋ ๋๋จธ์ง ๊บผ๋ด๊ธฐ
}
return sb.toString();
}
'Algorithm > JAVAํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์์๋์งํ (ํธ๋ฆฌ) (13) | 2025.02.20 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ํฌ๋ ์ธ ์ธํ ๋ฝ๊ธฐ ๊ฒ์ (์คํ) (9) | 2025.02.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java / ์๋ฐ ) ์ ์ฐ๊ทผ๋ฌด์ ๋ฌธ์ ํ์ด (11) | 2025.02.14 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์คํ์ฑํ ๋ฐฉ ๋ฌธ์ ํ์ด (2) | 2025.02.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๋ฌธ์์ด ์๊ธฐ, ๋ ์์ ์ฐ์ฐ๊ฐ ๋น๊ตํ๊ธฐ (16) | 2025.02.06 |
๐ 1. ๋ฌธ์ ์ค๋ช
10์ง์๋ฅผ ์ ๋ ฅ๋ฐ์ 2์ง์๋ก ๋ณํํด ๋ฐํํ๋ solution() ํจ์๋ฅผ ๊ตฌํํ์ธ์
์ ์ฝ์กฐ๊ฑด
- decimal์ 1์ด์ 10์ต ๋ฏธ๋ง์ ์์ฐ์
์ ์ถ๋ ฅ ์
decimal | return |
10 | 1010 |
27 | 11011 |
12345 | 11000000111001 |
๐ก 2. ํ์ด ๊ณผ์
10์ง์๋ฅผ 2์ง์๋ก ํํํ๋ ๊ณผ์ ์ ์ด๋ฏธ ์ํ์ ์ผ๋ก ์ฆ๋ช ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ๊ฒ ์ ๋๋ค.
- 10์ง์ N์ 2๋ก ๋๋ ๋๋จธ์ง, ์ฆ %2 ์ฐ์ฐ์ ํ ๊ฐ์ ์ ์ฅํ๊ณ , N์ ๋ค์ 2๋ก ๋๋๋ค.
- ๋ชซ์ด 0์ด ์๋๋ผ๋ฉด ๋๋จธ์ง๋ฅผ ๋ฒ๋ฆฌ๊ณ ๋ค์ 1์ ์ํํ๋ค
- ๋ชจ๋ ๊ณผ์ ์ด ๋๋๊ณ 1์์ ์ ์ฅํ ์๋ฅผ ๋ค๋ถํฐ ์์๋๋ก ๊ฐ์ ธ์ ๋ถ์ธ๋ค.

์๋ฅผ ๋ค์ด ์ญ์ง์ 13์ ์ ๊ณผ์ ๋๋ก 2์ง์๋ก ๋ณํํ๋ ๋ชจ์ต์ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค. 13์ 2๋ก ๋๋์ด๊ฐ๋ฉด์ ๋๋ ๋๋จธ์ง๋ฅผ ์์๋๋ก ์ ์ฅํ ํ, ์ด ๊ณผ์ ์ ๋ชซ์ด 0์ด ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ค. ๋ชซ์ด 0์ด ๋๋ฉด ์ ์ฅํ ๊ฐ์ ๋ค์์๋ถํฐ ์์๋๋ก ์ฝ์ผ๋ฉด 1101์ผ๋ก ์ด์ง์ ๋ณํ์ด ์๋ฃ๋๋ค.
์ด ๋ฌธ์ ๋ ์ ํ์ ์ธ ์คํ ๋ฌธ์ ์ด๋ค. ๋๋จธ์ง๋ฅผ ์คํ์ ์๊ณ ํ๋์ฉ ๊บผ๋ด๋ฉด ๋ต์ด ๋์จ๋ค.

์ด๊ธฐ์๋ 13์ผ๋ก ์์ํ๋ค. 13์ 2๋ก ๋๋๊ณ ๋๋จธ์ง๋ฅผ ์คํ์ ํธ์ํ๋ค. 13์ 2๋ก ๋๋ ๋๋จธ์ง๊ฐ 1์ด๊ธฐ ๋๋ฌธ์ 1์ ์คํ์ Push ํ๋ค.

๋ค์์ 13์ 2๋ก ๋๋ ๋ชซ 6์ ๋ค์ 2๋ก ๋๋๋ค. ๋๋จธ์ง๊ฐ 0์ด๊ธฐ ๋๋ฌธ์ 0์ ํธ์ํ๊ณ , 3์ 2๋ก ๋๋ ๋๋จธ์ง๋ 1์ด๊ธฐ ๋๋ฌธ์ 1์ ํธ์ํ๋ค.

๋ง์ง๋ง์ผ๋ก ์ญ์ง์ 13์ ๋ชซ์ด 0์ด ๋ ๋๊น์ง ๋๋ ๊ฒฐ๊ณผ๋ก ์คํ์๋ ๋๋จธ์ง์ธ 1, 0, 1, 1 ์ด ์์๋๋ก ์์ด๊ฒ ๋๋ค.

์ฐ์ฐ์ ๋ค ๊ธ๋ธ ํ์ ์คํ ๋งจ ์์ ์์ธ ๊ฐ๋ถํฐ stack.pop()์ผ๋ก ๊บผ๋ด์ค๋ฉด 13์ ์ด์ง์๋ก ๋ณํํ 1101์ด ๋๋ค.
โญ 3. ์ ๋ต์ฝ๋
public static String solution(int decimal) { Stack<Integer> stack = new Stack<>(); // ๋๋จธ์ง๋ฅผ ์ ์ฅํ ์คํ while(decimal != 0) { // ๋ชซ์ด 0์ด ๋ ๋ ๊น์ง ๋ฐ๋ณต stack.push(decimal % 2); // ๋๋จธ์ง ์คํ์ ๋ฃ๊ธฐ decimal /= 2; // 2๋ก ๋๋๊ธฐ } StringBuilder sb = new StringBuilder(); while(!stack.isEmpty()) { sb.append(stack.pop()); // ์คํ์ ์๋ ๋๋จธ์ง ๊บผ๋ด๊ธฐ } return sb.toString(); }
'Algorithm > JAVAํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์์๋์งํ (ํธ๋ฆฌ) (13) | 2025.02.20 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ํฌ๋ ์ธ ์ธํ ๋ฝ๊ธฐ ๊ฒ์ (์คํ) (9) | 2025.02.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java / ์๋ฐ ) ์ ์ฐ๊ทผ๋ฌด์ ๋ฌธ์ ํ์ด (11) | 2025.02.14 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ์คํ์ฑํ ๋ฐฉ ๋ฌธ์ ํ์ด (2) | 2025.02.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] (Java) ๋ฌธ์์ด ์๊ธฐ, ๋ ์์ ์ฐ์ฐ๊ฐ ๋น๊ตํ๊ธฐ (16) | 2025.02.06 |