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

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

[Javascript] ๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ (76502)

๋ฌธ์ œ๋งํฌ

 

์ ‘๊ทผ ๋ฐฉ๋ฒ•

๋ฌธ์ž์—ด s์— ๊ด„ํ˜ธ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง€๊ณ , s๋ฅผ ํšŒ์ „ํ•˜๋ฉฐ ([0,1,2,3,4] => [1,2,3,4,0] => [2,3,4,0,1] ์ด๋Ÿฐ์‹์œผ๋กœ)
์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๊ทœ์น™์— ๋งž๋Š” s์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 
(์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๊ทœ์น™์ด๋ž€ ์—ด๋ฆผ๊ณผ ๋‹ซํž˜์ด ์ œ๋Œ€๋กœ ๋œ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. "์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ (), ({}), {[({})]}" ) 

์šฐ์„  s๋ฅผ ํšŒ์ „ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ํšŒ์ „ํ•œ s๋งˆ๋‹ค ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์šฐ์„  ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋กœ },],)์— ํ•ด๋‹นํ•˜๋Š” rightBracket์ด ์˜ฌ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ , 
๋ชจ๋“  ๋ฌธ์ž์—ด s๋ฅผ sArr์— ๋‹ด์€ ๋’ค (splice๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐ์—ดํ™”)

sArr์„ ์ˆœํšŒํ•˜๋ฉด์„œ sArr[0]์ด leftBracket์— ํฌํ•จ๋˜์—ˆ๊ณ , leftBracket[i]์™€ rightBracket[i+1]์ด ๊ฐ™์€ ๊ฒฝ์šฐ,
์ด ๋‘˜์„ ์ง€์šฐ๊ณ  ๋‹ค์‹œ i๋ฅผ 0์œผ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
(i ๋ฅผ -1๋กœ ์ดˆ๊ธฐํ™”ํ•œ ์ด์œ ๋Š” for๋ฌธ์ด ๋๋‚˜๋ฉด ํ›„์œ„ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด i++์ด ์ด๋ค„์ ธ์„œ i๊ฐ€ 0์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.)

๊ฒฐ๊ณผ์ ์œผ๋กœ sArr์˜ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๋‚จ์•„์žˆ๋Š” ์š”์†Œ๊ฐ€ ์žˆ์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

correctBracket์˜ ์‹ค์ œ ๊ฒฐ๊ณผ๋ฅผ ์‚ดํŽด๋ณด๋ฉด
๋งŒ์•ฝ leftBracket[i]์™€ rightBracket[i+1]์ด ๊ฐ™์€ ๊ฒฝ์šฐ ์ด ๋‘˜์„ spliceํ•˜๊ณ , ๋‹ค์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐฐ์—ด์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

function solution(s) {
    let count = 0;
    for(let i = 0; i < s.length; i++){
        s = s.slice(1) + s[0];
        if(correctBracket(s)) count++;  
    }
    return count;
}

const correctBracket = (s) => {
  let leftBracket = ['{','[','('];
  let rightBracket = ['}',']',')'];
  let sArr = [];

  if (rightBracket.includes(s[0])) return;
  
  for(let i = 0; i < s.length; i++){
    sArr.push(s[i]);
  }
  for(let i = 0; i < sArr.length - 1; i++){
    if(leftBracket.includes(sArr[i]) && leftBracket.indexOf(sArr[i]) === rightBracket.indexOf(sArr[i+1])){
      sArr.splice(i,2);
      i = -1;
    }
  }
  return sArr.length === 0 ? true : false;
}