์•Œ๊ณ ๋ฆฌ์ฆ˜

Algorithm | Brackets ์œ ํšจ์„ฑ ๋กœ์ง ๊ตฌํ˜„

3jun 2022. 1. 17. 15:18

๐Ÿ‘“ ๋ฌธ์ œ

๋‚˜์˜ ๋‹ต์•ˆ

function isValid(s) {
 const openBrackets = ['(', '[', '{'];
 const closeBrackets = [')', ']', '}'];  
  for(let i=0; i<3; i++){
    let open = s.indexOf(openBrackets[i]);
    let close = s.indexOf(closeBrackets[i]);
    if( (close-open)%2 === 1) {
      return true;
    } else {
      return false;
    }
  }
}

์‚ฌ๊ณ ์˜ ํ๋ฆ„

  1. true ๊ฐ’์ด ๋‚˜์˜ค๊ธฐ ์œ„ํ•ด์„œ ๊ฐ open bracket๊ณผ close bracket์€ ์—ฐ์ด์–ด ๋‚˜์˜ค๋˜์ง€ ํ˜น์€ ์ด๋Ÿฐ ๊ด„ํ˜ธ๋“ค ๋ฐ”๊นฅ์— ์œ„์น˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์— ๋ธŒ๋ผ์ผ“ ์„ธํŠธ๋“ค์ด ์กด์žฌํ•ด์•ผํ•œ๋‹ค.
    i.e). {[()]} / []({}) ...
  2. ๋”ฐ๋ผ์„œ ์„ธํŠธ๊ฐ€ ๋˜๋Š” ๋ธŒ๋ผ์ผ“์˜ ์ธ๋ฑ์Šค๋Š” 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์ด 1์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.
  3. open bracket ๊ณผ close bracket์„ ๋‚˜๋ˆ ์„œ ๋ฐฐ์—ด์— ๋„ฃ์€ ๋‹ค์Œ, ์„ธํŠธ๊ฐ€ ๋˜๋Š” ๋ธŒ๋ผ์ผ“๋“ค์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜๊ณ  close bracket์˜ ์ธ๋ฑ์Šค ๊ฐ’์—์„œ open bracket์˜ ์ธ๋ฑ์Šค๋ฅผ ๋นผ๊ณ  ๊ทธ ๊ฐ’์„ 2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 1์ด๋ฉด true, ์•„๋‹ˆ๋ฉด false๊ฐ€ ์ถœ๋ ฅ ๋˜๋„๋ก ํ•œ๋‹ค.

โŒ ์˜ˆ์™ธ

s = "{}"    // false    
// bracket์„ i ์— ๋”ฐ๋ผ (, [, { ์ˆœ์„œ๋กœ ๋น„๊ตํ•˜์—ฌ ์ฒซ๋ฒˆ์งธ ์†Œ๊ด„ํ˜ธ ๋น„๊ต์—์„œ false ๊ฐ’์ด ์ƒ๊ธฐ๋ฉด false ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. 

s = "()))"        // true
s = "()}[]"        // true
// open ๋ธŒ๋ผ์ผ“๊ณผ close ๋ธŒ๋ผ์ผ“์˜ ์„ธํŠธ๊ฐ€ ๋งž์ง€ ์•Š์œผ๋ฉด ์กฐ๊ฑด๋ฌธ์ด ๋Œ์•„๊ฐ€์ง€ ์•Š๋Š”๋‹ค.