728x90
๐ section06 - 7 - ๊ต์ก๊ณผ์ ์ค๊ณ
ํ์๊ฐ ์ง ์์
์ค๊ณ๋๊ฐ ์ฃผ์ด์ง ์์
๊ณํํ์ ๋ง๋์ง ๊ฒ์ฆํ๋ ๋ฌธ์ ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก queue
์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋๋ฐ, ํ์์ ์์
์ค๊ณ๋๋ฅผ ์์์๋ถํฐ ํ๋์ฉ ๊บผ๋ด์ ๋น๊ตํด์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ while
๋ฌธ ๋ณด๋ค๋ for
๋ฌธ์ ์ฌ์ฉํด์ผํ๋๋ฐ ๋ง์ฝ, ์์
๊ณํํ๊ฐ ์์
์ค๊ณ๋์ ํ๋๋ ํฌํจ์ด ๋์ด์์ง ์์ผ๋ฉด while
๋ฌธ์ด ๋ฉ์ถ์ง ์๋๋ค. ๋ฐ๋ผ์ for
๋ฌธ์ ์ฌ์ฉํด ์์
์ค๊ณ๋์ ํ๋์ฉ ์ ๊ทผํ๋ฉด์ ์์
๊ณํํ๊ฐ ์๋์ง ์ดํด๋ณด๋ ๋ฐฉ๋ฒ์ด ๊ด์ฐฎ์ ์ ๊ทผ ๋ฐฉ๋ฒ์ผ ๊ฒ์ด๋ค. ๋๋ ์ด๋ ๊ฒ ํ์๋ค.
- ์์ ์ค๊ณ๋๋ฅผ ๋ฐฐ์ด๋ก ๋ง๋ ๋ค.(split)
- ์์ ๊ณํํ(target)๋ฅผ ํ๋์ฉ ๋๋ฉด์ ์์ ์ค๊ณ๋(s)๋ ํ ๋ฒ์ฉ ๋๋ค.
- ์์
์ค๊ณ๋์ ๋งจ ์๊ณผ ์์
๊ณํํ์ ๋งจ ์์ด ๋๊ฐ์ผ๋ฉด
cnt++
ํ๊ณs[0]
๋ฅผ ๊บผ๋ธ๋ค. ์ฌ๊ธฐ์s
๋ ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์splice
๋ฅผ ์ฌ์ฉํ๋ค. ์์ ์ค๊ณ๋์ ๋งจ ์๊ณผ ์์ ๊ณํํ์ ๋งจ ์์ด ๊ฐ์ง ์์ผ๋ฉด ์ ์ผ ์์ ์ค๊ณ๋์ ๋งจ ์์ ๋งจ ๋ค๋ก ๋ณด๋ธ๋ค. - ์์
๊ณํํ(
CBA
)์length
๋งํผ ๋ฐ๋ณต
์ ์๋์ ์ด๊ฒ๋ณด๋ค ๋ ๊ฐ๋จํ๊ฒ ํธ์ จ๋ค.
- ์์
์ค๊ณ๋๋ฅผ
for
๋ฌธ์ผ๋ก ํ๋ฐํด ๋๋ค. - ๋ง์ฝ,
x
๊ฐ ์์ ๊ณํํ์ ํฌํจ(includes
)์ด ๋์ด์๋์ง ํ์ธํ๋ค. - ์ฐธ์ด๋ฉด ๋ง์ฝ,
x
์queue.shift()
๋ฅผ ๋น๊ตํ๊ณ ๊ฐ์ง ์์ผ๋ฉดreturn "NO"
๋ฅผ ํ๊ณ , ๊ฐ์ผ๋ฉดshift()
ํ๋ค. - ๋ง์ง๋ง์
queue
์ ๊ธธ์ด๋ฅผ ํ์ธํด์ 0๋ณด๋ค ํฌ๋ฉด ์์ ์ค๊ณ๊ฐ ์๋ชป๋ ๊ฒ์ด๋ฏ๋กNO
, 0์ด๋ฉดYES
๋ฅผ ์ถ๋ ฅํ๋ค.
728x90
// ๋์ ์ฝ๋
let s = "CBDAGE";
let target = "CBA";
console.log(solution(s, target));
function solution(s, target){
let cnt = 0;
s = s.split("");
for (let x of target){
for (let y of s){
if (s[0] === x){
cnt++;
s.splice(0, 1);
break;
}else s.push(s.shift());
}
}
return cnt === target.length ? "YES" : "NO";
}
// ๊ฐ์ ์ฝ๋
let s = "CBDAGE";
let target = "CBA";
console.log(solution(s, target));
function solution(s, target) {
let cnt = 0;
let queue = target.split('');
for (let x of s){
console.log(s, x, queue)
if (queue.includes(x)){
if (x !== queue.shift()) return "NO";
}
}
return queue.length>0 ? "NO" : "YES";
}
๋ฐ์ํ
๋๊ธ