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

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ

giraffe_ 2023. 8. 30. 22:42

https://school.programmers.co.kr/learn/courses/30/lessons/70129

 

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

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

programmers.co.kr

 

 

 

 

 

๋ฌธ์ œ

  • 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ์–ด๋–ค ๋ฌธ์ž์—ด x์— ๋Œ€ํ•œ ์ด์ง„ ๋ณ€ํ™˜
    1. x์˜ ๋ชจ๋“  0์„ ์ œ๊ฑฐ
    2. x์˜ ๊ธธ์ด๋ฅผ c๋ผ๊ณ  ํ•˜๋ฉด, x๋ฅผ "c๋ฅผ 2์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•œ ๋ฌธ์ž์—ด"๋กœ ๋ฐ”๊พผ๋‹ค.
  • ์˜ˆ์‹œ : x = "0111010" -> "1111" -> "100”
  • s๊ฐ€ "1"์ด ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ s์— ์ด์ง„ ๋ณ€ํ™˜์„ ๊ฐ€ํ–ˆ์„ ๋•Œ, ์ด์ง„ ๋ณ€ํ™˜์˜ ํšŸ์ˆ˜์™€ ๋ณ€ํ™˜ ๊ณผ์ •์—์„œ ์ œ๊ฑฐ๋œ ๋ชจ๋“  0์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ๊ฐ ๋ฐฐ์—ด์— ๋‹ด์•„ return

 

์ œํ•œ์‚ฌํ•ญ

  • s์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 150,000 ์ดํ•˜

 

 

 

 

 

ํ’€์ด

  • s๊ฐ€ 1์ด ๋  ๋•Œ๊นŒ์ง€
    • ๋ฌธ์ž์—ด์—์„œ 0 ์ œ๊ฑฐ
      • ๋ฌธ์ž์—ด์—์„œ 0์˜ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ
    • 1๋งŒ ๋‚จ์€ ๋ฌธ์ž์—ด ๊ธธ์ด ์–ป๊ธฐ :  ์ „์ฒด ๋ฌธ์ž์—ด ๊ธธ์ด์—์„œ 0์˜ ๊ฐœ์ˆ˜ ๋นผ๊ธฐ
    • ์ด์ง„์ˆ˜ ๋ณ€ํ™˜ : Integer.toString(i, 2) ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ
    • ์ด์ง„ ๋ณ€ํ™˜ ํšŸ์ˆ˜ ์นด์šดํŒ…

 

 

 

 

 

์ฝ”๋“œ

import java.util.*;

class Solution {
    public int[] solution(String s) {
        int count_trans = 0;
        int count_zero = 0;

        while(!s.equals("1")) {
            //0 ์ œ๊ฑฐ(0์˜ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ)
            int zero = 0;
            for(int i = 0; i < s.length(); i++) {
                if(s.charAt(i) == '0') {
                    zero++;
                }
            }

            //1๋งŒ ๋‚จ์€ ๋ฌธ์ž์—ด ๊ธธ์ด ์–ป๊ธฐ
            int one = s.length() - zero;

            //์ด์ง„์ˆ˜ ๋ณ€ํ™˜
            s = Integer.toString(one, 2);

            //์นด์šดํŠธ
            count_trans++;
            count_zero += zero;
        }

        return new int[] {count_trans, count_zero};
    }
}

 

 

 

 

 

๊ฒฐ๊ณผ

 

 

 

 

 

๋ฐฐ์šด์ 

  • ์ด์ง„๋ฒ• ๋ณ€ํ™˜ ์ง€์› ๋ฉ”์†Œ๋“œ
    • Integer.toBinaryString(์ˆซ์ž); ๋„ ์žˆ๋‹ค.