๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณต (70129)

๋ฌธ์ œ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ

 

programmers.co.kr

 

 

์ ‘๊ทผ ๋ฐฉ๋ฒ•

๋ฌธ์ œ ๊ทธ๋Œ€๋กœ ์ฃผ์–ด์ง„ s์˜ 0์„ ์ œ๊ฑฐํ•˜๊ณ  1๋กœ ์ด๋ฃจ์–ด์ง„ s์˜ ๊ธธ์ด๋ฅผ 2์ง„๋ฒ•์œผ๋กœ ๋‹ค์‹œ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.

1. s์˜ 0 ์ œ๊ฑฐํ•˜๊ธฐ
์ฒ˜์Œ์—๋Š” for๋ฌธ์œผ๋กœ ๋Œ๋ฉด์„œ s[i] === "0" ์ผ๋•Œ s[i]๋ฅผ ""์œผ๋กœ ๋ฐ”๊ฟ” ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•˜์˜€๋‹ค.
ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ณ„์†ํ•ด์„œ ๋ฐฐ์—ด์˜ index๋ฒˆํ˜ธ๊ฐ€ ์žฌํ• ๋‹น ๋˜๋ฏ€๋กœ ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๋‹ค. (O(N))

๊ทธ๋ž˜์„œ "1"๋กœ ์ด๋ฃจ์–ด์ง„ oneStr ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด s[i] === "1" ์ผ๋•Œ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

2. oneStr์˜ ๊ธธ์ด๋ฅผ 2์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ s์— ๋Œ€์ž…
์‰ฝ๊ฒŒ oneStr.length.toString(2)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
 
function solution(s) {
  var answer = [];
  let oneStr = '';
  let removeZeroCnt = 0;
  let changeCnt = 0;

  while (s.length > 1) {
    for (let i = 0; i < s.length; i++) {
      if (s[i] === '1') {
        oneStr += s[i];
      }
    }

    removeZeroCnt += s.length - oneStr.length;
    s = oneStr.length.toString(2);
    changeCnt++;
    oneStr = '';
  }

  answer = [changeCnt, removeZeroCnt];
  return answer;
}