๐ ๋ฌธ์
0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ์ด๋ค ๋ฌธ์์ด x์ ๋ํด์, ๋น์ ์ ๋ค์๊ณผ ๊ฐ์ ํ๋์ ํตํด x๋ฅผ ์ต๋ํ ์ฌ์ ์์ผ๋ก ์์ ์ค๋๋ก ๋ง๋ค๊ณ ์ ํฉ๋๋ค.
- x์ ์๋ "110"์ ๋ฝ์์, ์์์ ์์น์ ๋ค์ ์ฝ์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, x = "11100" ์ผ ๋, ์ฌ๊ธฐ์ ์ค์์ ์๋ "110"์ ๋ฝ์ผ๋ฉด x = "10" ์ด ๋ฉ๋๋ค. ๋ฝ์๋ "110"์ x์ ๋งจ ์์ ๋ค์ ์ฝ์
ํ๋ฉด x = "11010" ์ด ๋ฉ๋๋ค.
๋ณํ์ํฌ ๋ฌธ์์ด x๊ฐ ์ฌ๋ฌ ๊ฐ ๋ค์ด์๋ ๋ฌธ์์ด ๋ฐฐ์ด s๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ ๋ฌธ์์ด์ ๋ํด์ ์์ ํ๋์ผ๋ก ๋ณํํด์ ๋ง๋ค ์ ์๋ ๋ฌธ์์ด ์ค ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์์ ์ค๋ ๋ฌธ์์ด์ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- 1 ≤ s์ ๊ธธ์ด ≤ 1,000,000
- 1 ≤ s์ ๊ฐ ์์ ๊ธธ์ด ≤ 1,000,000
- 1 ≤ s์ ๋ชจ๋ ์์์ ๊ธธ์ด์ ํฉ ≤ 1,000,000
์ ์ถ๋ ฅ ์
| ["1110","100111100","0111111010"] | ["1101","100110110","0110110111"] |
โ๏ธ ํ์ด
๋จผ์ '110'์ ๋ชจ๋ ์ฐพ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค. ์ฐพ์ '110'์ ์ ์ ํ ์์น์ ๋ฐฐ์นํจ์ผ๋ก์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๊ณ ํ๋ค. ์ฃผ์ํด์ผํ๋ ๊ฒ์ '110'์ ์ฐพ์ ๋ ์ฐพ์ '110'์ ์ ๊ฑฐํ๊ณ ๋ค์ ์ดํด๋ด์ผํ๋ ๊ฒ์ด๋ค. ์์์ ์๋ '0111111010'์ ๋ณด๋ฉด '110'์ ํ๋ฒ ๋ฑ์ฅํ๋ค. ํ์ง๋ง ์ฐพ์ '110'์ ์ ๊ฑฐํด๋ณด๋ฉด '0111110'์ผ๋ก ์ ์ผ ๋ง์ง๋ง์ '110'์ด ๋ ๋ฑ์ฅํ๋ค.
์ด๋ ๊ฒ ์ฐพ์ '110'๋ค์ '110'์ ์ ๊ฑฐํ ๋ฌธ์์ด์์ ์ ์ผ ๋ง์ง๋ง์ ๋ฑ์ฅํ๋ 0๋ค์ ๋ถ์ฌ์ค์ผ ํ๋ค. ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ค์ '1'๋ง ๋ฑ์ฅํ๋ฏ๋ก '110'์ด ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
- '1'๊ณผ '0'์ ์กฐํฉํ์ฌ ์ธ์๋ฆฌ ๋ฌธ์์ด์ ๋ง๋ค๋ฉด '000', '001', '010', '011', '100', '101', '110', '111'๋ก '110'์ 0์ด ๋ค์ด๊ฐ๋ ๋ฌธ์์ด ์ค ๊ฐ์ฅ ๋ง์ง๋ง ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
์ด๋ฐ ์ ๊ทผ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์๋ค.
๊ฐ์ฅ ๋จผ์ ์๋ํ ๋ฐฉ๋ฒ์ match์ replace๋ฅผ ์ด์ฉํด์ 110์ ์ฐพ๋ ๋ฐฉ๋ฒ์ด์๋ค. while๋ฌธ์ผ๋ก ๋๋ฆฌ๋ฉด์ str.match(/110/)์ผ๋ก ํ์ํ๊ณ replace๋ก ์ ๊ฑฐํ๋ค. ์ดํ '110'์ด ์ ๊ฑฐ๋ ๋ฌธ์์ด์ for๋ฌธ์ผ๋ก ๋ค์์ ๋ถํฐ ํ์ํ๋ฉฐ 0์ธ ๊ฒฝ์ฐ ์๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ํด์คฌ๋ค. ํ์ง๋ง match์ replace์ด ์ ์ฒด ๋ฌธ์์ด์ ํ์ํ๊ธฐ ๋๋ฌธ์ธ์ง ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค.
๋ ๋ฒ์งธ๋ก๋ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ค. for๋ฌธ์ผ๋ก ์์์๋ถํฐ ๋ฌธ์์ด์ ํ์ํ๋ฉฐ 0์ด ๋ฑ์ฅํ ๊ฒฝ์ฐ ๋ฐฐ์ด(arr)์ ๋ค์ด๊ฐ ์์ ์ค ๋ง์ง๋ง, ๋ง์ง๋ง - 1 ์ธ๋ฑ์ค์ ๊ฐ์ ํ๋ณํ์ฌ ๋๋ค 1์ธ ๊ฒฝ์ฐ '110'์ด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์์ ๋นผ์ฃผ๊ณ '110'์ ๊ฐ์๋ฅผ ์๋ฏธํ๋ cnt ๋ณ์๋ฅผ 1 ์ฆ๊ฐ์์ผฐ๋ค. ์ดํ ๋ค์์๋ถํฐ ๋ฐฐ์ด(arr)์ ์ํํ๋ฉฐ 0์ด ๋ฑ์ฅํ๋ฉด '110'์ cnt๋งํผ ๋ํด์ฃผ๊ณ ๋ฐฐ์ด(arr)์ ์์๋ ๋ํด์คฌ๋ค. ๋ง์ฝ ๋ฐฐ์ด์ ์๋ ์์๋ค์ด ๋ชจ๋ 1์ธ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํด cnt๋งํผ '110'์ด ๋ํด์ง์ง ์์๋ค๋ฉด ๋ง์ง๋ง์ ์ ์ผ ์์ ๋ํด์ฃผ๊ณ ๋ง๋ค์ด์ง '1'๊ณผ '0'์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ answer์ ๋ฃ์ด์คฌ๋ค.
โจ๏ธ ์ฝ๋
function solution(s) {
var answer = [];
for (let str of s) {
if (str.length <= 3) {
answer.push(str);
continue;
}
const arr = [];
let cnt = 0;
for (const n of str) {
let flag = false;
if (n === '0') {
if (arr.length >= 2) {
if (arr[arr.length - 1] === '1' && arr[arr.length - 2] === '1') {
arr.pop();
arr.pop();
cnt += 1;
flag = true;
}
}
}
if (!flag) arr.push(n);
}
let subStr = '';
for (let i = arr.length - 1; i >= 0; i--) {
if (arr[i] === '0' && cnt) {
subStr = '110'.repeat(cnt) + subStr;
cnt = 0;
}
subStr = arr[i] + subStr;
}
if (cnt) subStr = '110'.repeat(cnt) + subStr;
answer.push(subStr);
}
return answer;
}'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Algorithm] ์ธ์ฌ๊ณ ๊ณผ (0) | 2023.03.13 |
|---|---|
| [Algorithm] ์ ์ ์ ์ถ ์ค์ผ์ค๋ง (1) | 2023.03.12 |
| [Algorithm] ํ์ ํฐํธ๋ฆฌ๊ธฐ (0) | 2023.03.10 |
| [Algorithm] ๋ฏธ๋ก ํ์ถ ๋ช ๋ น์ด (0) | 2023.03.09 |
| [Algorithm] ์์ (0) | 2023.03.08 |