๋ฌธ์
ํ์ด
์ ๋ ฅ๊ฐ์์ 0์ ์ ๊ฑฐํ๊ณ
-> 0 ์ ๊ฑฐ ํ ๊ธธ์ด๋ฅผ ๋ค์ ์ด์ง๋ณํ
-> ์ด์ง๋ณํํ ์์์ ๋ค์ 0์ ์ ๊ฑฐ
-> 0 ์ ๊ฑฐ ํ ๊ธธ์ด๋ฅผ ๋ค์ ์ด์ง๋ณํ
ํ๋ ๊ฒ์ ๋ฐ๋ณตํด์ ์ด์ง๋ณํ ๊ฒฐ๊ณผ๊ฐ 1์ด ๋ ๋๊น์ง ๋ฐ๋ณตํด์ผํ๋ค.
์ถ๋ ฅ๊ฐ์ผ๋ก๋ [{์ด ๋ฐ๋ณต ํ์}, {์ ๊ฑฐํ 0์ ๊ฐ์}] ๋ฅผ ์ถ๋ ฅํด์ผํ๋ค.
๋ณ์ ์ค๋ช
- len : 0 ์ ๊ฑฐํ ๊ธธ์ด
- zero : ์ ๊ฑฐํ 0์ ๊ฐ์ ์นด์ดํฐ
- count : ๋ฐ๋ณต ํ์ ์นด์ดํฐ
ํ์ด ์์
class Solution {
static int zero = 0;
static int count = 0;
public int[] solution(String s) {
convert(s);
int[] answer = {count, zero};
return answer;
}
private void convert(String s) {
count ++;
int len = 0;
for (char c: s.toCharArray()){
if (c == '1') len ++; // 0 ์ ๊ฑฐํ ๊ธธ์ด
else zero++; // ์ ๊ฑฐํ 0์ ๊ฐ์
}
if (len == 1) return; // ์ด์ง ๋ณํ ๊ฒฐ๊ณผ 1์ด๋ฉด ์ข
๋ฃ
s = Integer.toBinaryString(len); // 2์ง์ ๋ณํ ํจ์
convert(s); // ์ฌ๊ทํจ์
}
}
solution ํจ์
convert ํจ์๋ฅผ ํธ์ถํ๊ณ ํจ์๊ฐ ์ข ๋ฃ๋๋ฉด ์นด์ดํฐ ๊ฐ์ธ count์ zero๋ฅผ ๋ฐํํด์ค๋ค.
convert ํจ์
1. ์ ๋ ฅ๊ฐ์ toCharArray()๋ก ํ๋ํ๋ ์ํํ๋ค.
2. ๋ฌธ์ ์์ 0 ์ ๊ฑฐํ ๊ธธ์ด๋ฅผ ๋ค์ ์ด์ง๋ณํํด์ผํ๋๋ฐ, ์ด๋ 1์ ๊ฐ์์ ๋๊ฐ์ผ๋ฏ๋ก ๊ฐ์ด 1์ผ ๊ฒฝ์ฐ์ `len`์ ์ฆ๊ฐ์์ผ์ค๋ค.
3. ์ ๊ฑฐํ 0์ ๊ฐ์๋ฅผ ์ถ๋ ฅํด์ค์ผํ๋ฏ๋ก, ์ ๋ ฅ๊ฐ์ด 1์ด ์๋๋ฉด `zero`๋ฅผ ์ฆ๊ฐ์์ผ์ค๋ค.
4. ์ด ๋ ์ด์ง๋ณํ ๊ฒฐ๊ณผ๊ฐ 1์ด ๋ ๋๋ len์ด 1์ธ ๊ฒฝ์ฐ์ด๋ฏ๋ก ์ด ๊ฒฝ์ฐ์ ํจ์๋ฅผ ์ข ๋ฃ์์ผ์ค๋ค.
5. len์ ๋ค์ ์ด์ง๋ณํํด์ค์ผ ํ๋๋ฐ, ์ด ๋ `Integer.toBinaryString(len)` ์ ์จ์ ์ด์ง๋ณํ ํด์คฌ๋ค.
6. ๋ณํ๊ฐ์ convert ํจ์์ ๋ฃ์ด์ ์ฌ๊ทํธ์ถ ํด์ค๋ค. ํจ์ ํธ์ถ์ `count`๋ฅผ ์ฆ๊ฐ์ํจ๋ค.
'์ฝ๋ฉ ํ ์คํธ > ์๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / ์๋ฐ / Lv.3] 43105 ์ ์ ์ผ๊ฐํ (5) | 2024.07.24 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / ์๋ฐ / Lv.2] 12924 ์ซ์์ ํํ (1) | 2024.07.23 |
[ํ๋ก๊ทธ๋๋จธ์ค / ์๋ฐ / Lv.3] 42628 ์ด์ค์ฐ์ ์์ํ (1) | 2024.07.22 |
[ํ๋ก๊ทธ๋๋จธ์ค / ์๋ฐ / Lv.2] 12941 ์ต์๊ฐ ๋ง๋ค๊ธฐ (0) | 2024.07.11 |
[ํ๋ก๊ทธ๋๋จธ์ค / ์๋ฐ / Lv.2] 12939 ์ต๋๊ฐ๊ณผ ์ต์๊ฐ (0) | 2024.07.10 |