๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/70129
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ์ด๋ค ๋ฌธ์์ด x์ ๋ํ ์ด์ง ๋ณํ์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค.
- x์ ๋ชจ๋ 0์ ์ ๊ฑฐํฉ๋๋ค.
- x์ ๊ธธ์ด๋ฅผ c๋ผ๊ณ ํ๋ฉด, x๋ฅผ "c๋ฅผ 2์ง๋ฒ์ผ๋ก ํํํ ๋ฌธ์์ด"๋ก ๋ฐ๊ฟ๋๋ค.
์๋ฅผ ๋ค์ด, x = "0111010"์ด๋ผ๋ฉด, x์ ์ด์ง ๋ณํ์ ๊ฐํ๋ฉด x = "0111010" -> "1111" -> "100" ์ด ๋ฉ๋๋ค.
0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. s๊ฐ "1"์ด ๋ ๋๊น์ง ๊ณ์ํด์ s์ ์ด์ง ๋ณํ์ ๊ฐํ์ ๋, ์ด์ง ๋ณํ์ ํ์์ ๋ณํ ๊ณผ์ ์์ ์ ๊ฑฐ๋ ๋ชจ๋ 0์ ๊ฐ์๋ฅผ ๊ฐ๊ฐ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- s์ ๊ธธ์ด๋ 1 ์ด์ 150,000 ์ดํ์ ๋๋ค.
- s์๋ '1'์ด ์ต์ ํ๋ ์ด์ ํฌํจ๋์ด ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
s | result |
"110010101001" | [3, 8] |
"01110" | [3, 3] |
"1111111" | [4,1] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
"110010101001"์ด "1"์ด ๋ ๋๊น์ง ์ด์ง ๋ณํ์ ๊ฐํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ์ฐจ | ์ด์ง ๋ณํ ์ด์ | ์ ๊ฑฐํ 0์ ๊ฐ์ | 0 ์ ๊ฑฐ ํ ๊ธธ์ด | ์ด์ง ๋ณํ ๊ฒฐ๊ณผ |
1 | "110010101001" | 6 | 6 | "110" |
2 | "110" | 1 | 2 | "10" |
3 | "10" | 1 | 1 | "1" |
3๋ฒ์ ์ด์ง ๋ณํ์ ํ๋ ๋์ 8๊ฐ์ 0์ ์ ๊ฑฐํ์ผ๋ฏ๋ก, [3,8]์ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
"01110"์ด "1"์ด ๋ ๋๊น์ง ์ด์ง ๋ณํ์ ๊ฐํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ์ฐจ | ์ด์ง ๋ณํ ์ด์ | ์ ๊ฑฐํ 0์ ๊ฐ์ | 0 ์ ๊ฑฐ ํ ๊ธธ์ด | ์ด์ง ๋ณํ ๊ฒฐ๊ณผ |
1 | "01110" | 2 | 3 | "11" |
2 | "11" | 0 | 2 | "10" |
3 | "10" | 1 | 1 | "1" |
3๋ฒ์ ์ด์ง ๋ณํ์ ํ๋ ๋์ 3๊ฐ์ 0์ ์ ๊ฑฐํ์ผ๋ฏ๋ก, [3,3]์ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
"1111111"์ด "1"์ด ๋ ๋๊น์ง ์ด์ง ๋ณํ์ ๊ฐํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํ์ฐจ | ์ด์ง ๋ณํ ์ด์ | ์ ๊ฑฐํ 0์ ๊ฐ์ | 0 ์ ๊ฑฐ ํ ๊ธธ์ด | ์ด์ง ๋ณํ ๊ฒฐ๊ณผ |
1 | "1111111" | 0 | 7 | "111" |
2 | "111" | 0 | 3 | "11" |
3 | "11" | 0 | 2 | "10" |
4 | "10" | 1 | 1 | "1" |
4๋ฒ์ ์ด์ง ๋ณํ์ ํ๋ ๋์ 1๊ฐ์ 0์ ์ ๊ฑฐํ์ผ๋ฏ๋ก, [4,1]์ return ํด์ผ ํฉ๋๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
class Solution {
public int[] solution(String s) {
// [์ด์ง ๋ณํ ํ์, ์ ๊ฑฐ๋ 0์ ๊ฐ์]
int[] answer = new int[2];
// ์ด์ง ๋ณํ ํ์ ์ ์ฅ
int cnt = 0;
// ๋ฌธ์์ด์ด "1"์ด ๋ ๋๊น์ง ๋ฐ๋ณต
while (!s.equals("1")) {
// ํ์ฌ ๋ฌธ์์ด ๊ธธ์ด ์ ์ฅ
int sLength = s.length();
// 0์ ๋ชจ๋ ์ ๊ฑฐํ ๋ฌธ์์ด
String replaceS = s.replace("0", "");
// ๋จ์ 1์ ๊ฐ์
int changeLength = replaceS.length();
// ์ ๊ฑฐ๋ 0์ ๊ฐ์ ์ถ๊ฐ
answer[1] += sLength - changeLength;
// ๋จ์ 1์ ๊ฐ์๋ฅผ 2์ง์๋ก ๋ณํํ์ฌ ๋ค์ s์ ์ ์ฅ
s = Integer.toBinaryString(changeLength);
// ๋ณํ ํ์ +1
cnt++;
}
// ์ต์ข
์ด์ง ๋ณํ ํ์ ์ ์ฅ
answer[0] = cnt;
// answer ๋ฐํ
return answer;
}
}
๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์๊ฐํ ๋ฐฉํฅ
0์ ๋จผ์ ์ ๊ฑฐํ๋ค. โ ์ ๊ฑฐํ 0์ ๊ฐ์๋ฅผ ์ ์ฅํ๋ค.
๋จ์ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ด์ง ๋ณํํ๋ค
โ1โ์ด ๋ ๋๊น์ง ๋ฐ๋ณต ์งํํ๋ค.
์ด์ง ๋ณํ ํ์๋ฅผ ํ์ธํ๊ธฐ ์ํด ๋ณ์ ํ๋๋ฅผ ํ์ฉํ์ฌ ํ์๋ฅผ ์ฒดํฌํ๋ค.
์ถ๊ฐ ํ์ด ๋ฐฉ๋ฒ
class Solution {
public int[] solution(String s) {
// [์ด์ง ๋ณํ ํ์, ์ ๊ฑฐ๋ 0์ ๊ฐ์]
int[] answer = new int[2];
// ๋ฌธ์์ด์ด "1"์ด ๋ ๋๊น์ง ๋ฐ๋ณต
while (!s.equals("1")) {
// ํ์ฌ ๋ฌธ์์ด ๊ธธ์ด
int sLength = s.length();
// ๋ฌธ์์ด์์ "0" ์ ๊ฑฐ
String replaceS = s.replace("0", "");
// ๋จ์์๋ "1"์ ๊ฐ์
int changeLength = replaceS.length();
// ์ ๊ฑฐ๋ "0"์ ๊ฐ์ ์ ์ฅ
answer[1] += sLength - changeLength;
// ๋จ์ "1"์ ๊ฐ์๋ฅผ ์ด์ง ๋ณํ
s = Integer.toBinaryString(changeLength);
// ์ด์ง ๋ณํ ํ์ +1
answer[0]++;
}
// answer ๋ฐํ
return answer;
}
}
'๐งฉ ํ๋ก๊ทธ๋๋จธ์ค > ๐ต ์๊ณ ๋ฆฌ์ฆ ํ์ด(Java)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์ซ์์ ํํ (0) | 2025.04.16 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ํฌ๊ธฐ๊ฐ ์์ ๋ถ๋ถ ๋ฌธ์์ด (0) | 2025.04.15 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์ฃผ์๊ฐ๊ฒฉ (4) | 2025.04.11 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (2) | 2025.04.10 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ํ๋ก์ธ์ค (1) | 2025.04.08 |