๋ฌธ์ ๋งํฌ
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ
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;
}
'์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] 2 * n ํ์ผ๋ง (12900) (0) | 2022.06.22 |
---|---|
[Javascript] ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ (12905) (0) | 2022.06.22 |
[Javascript] ์ฌ๋ฐ๋ฅธ ๊ดํธ (12909) (0) | 2022.06.19 |
[Javascript] ๋ค์ ํฐ ์ซ์ (12911) (0) | 2022.06.18 |
[Javascript] ์คํฌํธ๋ฆฌ (49993) (0) | 2022.06.18 |