๐Ÿ—๏ธ Algorithm/โฌ› ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

โฌ› [Programmers] [Java] [Level2] ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ

Dbswnstjd 2024. 1. 4. 17:51

๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/70129?language=java

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

ํ’€์ด

public class ์ด์ง„๋ณ€ํ™˜๋ฐ˜๋ณตํ•˜๊ธฐ {
    public static void main(String[] args) {
        int[] answer = solution("110010101001");
        System.out.println(answer[0]);
        System.out.println(answer[1]);
    }
    static public int[] solution(String s){
        int[] answer = new int[2];

        while(s.length() > 1){
            int cnt = 0;
            for(int i=0; i<s.length(); i++){
                if(s.charAt(i) == '0') answer[1]++;
                else cnt++;
            }

            s = Integer.toBinaryString(cnt);
            System.out.println(s);
            answer[0]++;
        }

        return answer;
    }
}

 

์ด์ง„๋ณ€ํ™˜์„ ํ•˜๋Š” ๋‹จ์ˆœ ๋ฌธ์ œ์ด๋‹ค. toBinaryString ์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ด๋‹ค.

1. s์˜ ๊ธธ์ด๊ฐ€ 1์ด ๋ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต์„ ํ•ด์ค€๋‹ค.

2. ์ด์ง„์ˆ˜๋Š” 1๊ณผ 0์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 0์˜ ๊ฐœ์ˆ˜์™€ 1์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์ฃผ๋„๋ก ํ•œ๋‹ค.

3. 0์˜ ๊ฐœ์ˆ˜๋Š” answer[1]์— ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  1์˜ ๊ฐœ์ˆ˜๋Š” 0์„ ์—†์•ค ๊ธธ์ด์ด๋ฏ€๋กœ 1์”ฉ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค.

4. s์— cnt๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.

5. ๋ณ€ํ™˜์„ ํ•œ๋ฒˆ ํ–ˆ์œผ๋ฏ€๋กœ answer[0]์ด 1 ์ฆ๊ฐ€ํ•œ๋‹ค.