์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ/์ž๋ฐ”

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / ์ž๋ฐ” / Lv.2] 70129 ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ

HHRR 2024. 7. 24. 15:53
๋ฌธ์ œ

 

ํ’€์ด

 

์ž…๋ ฅ๊ฐ’์—์„œ 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`๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.