๐ŸŸฃ ์˜ค๋Š˜์˜ ๋ฌธ์ œ ํšŒ๊ณ 

๊น€ํƒœ์šฑยท2023๋…„ 4์›” 4์ผ
0
post-thumbnail

๐Ÿค  ์˜ค๋Š˜์˜ ๋ฌธ์ œ ํ•ฅ์ง #1

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv2: ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

๋ฌธ์ œ ์„ค๋ช…
๊ด„ํ˜ธ๊ฐ€ ๋ฐ”๋ฅด๊ฒŒ ์ง์ง€์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์€ '(' ๋ฌธ์ž๋กœ ์—ด๋ ธ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ ์ง์ง€์–ด์„œ ')' ๋ฌธ์ž๋กœ ๋‹ซํ˜€์•ผ ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด

"()()" ๋˜๋Š” "(())()" ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ž…๋‹ˆ๋‹ค.
")()(" ๋˜๋Š” "(()(" ๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ์ž…๋‹ˆ๋‹ค.
'(' ๋˜๋Š” ')' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ฌธ์ž์—ด s๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ด๋ฉด true๋ฅผ return ํ•˜๊ณ , ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ์ด๋ฉด false๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ๋ฌธ์ž์—ด s์˜ ๊ธธ์ด : 100,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜
  • ๋ฌธ์ž์—ด s๋Š” '(' ๋˜๋Š” ')' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

sanswer
"()()"true
"(())()"true
")()("false
"(()("false

๋‚˜์˜ ํ’€์ด

function solution(s) {
  var answer = s
    .split(" ")
    .every((e) =>
      e[0] != "(" ? false : e[e.length - 1] != ")" ? false : true
    );

  return answer;
}

๊ตฌํ˜„ ์ ‘๊ทผ
1. split ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜
2. every ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด e[0]~ e[๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค] ๋ฅผ ์ˆœํ™˜ํ•˜๋ฉฐ ์ž…๋ ฅ ๊ฐ’์ด ์กฐ๊ฑด์— ๋งž๋Š”์ง€ blooean ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜.

๋ฌธ์ œ์ 
๊ตฌํ˜„๊นŒ์ง€๋Š” ์™„๋ฃŒ๊ฐ€ ๋๋Š”๋ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 5, 11, 17 / ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ 2๋ฒˆ์—์„œ ํ†ต๊ณผ๋ฅผ ํ•˜์ง€ ๋ชป ํ•จ.

์ด ์งˆ๋ฌธ์˜ ๋Œ“๊ธ€์ฒ˜๋Ÿผ ๋งจ ์•ž๊ณผ ๋’ค๊ฐ€ ๊ด„ํ˜ธ๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ๋‹ซํ˜€๋„, ์ค‘๊ฐ„์— ์ด์ƒ์ด ์ƒ๊ธฐ๋ฉด ๊ตฌ๋ถ„ํ•˜์ง€ ๋ชป ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ๋จ.

๋”๊ตฐ๋‹ค๋‚˜ ์Šคํƒ๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ์ด๋‹ˆ ์ฝ”๋“œ์˜ ํšจ์œจ์„ฑ๋„ ๊ณ ๋ ค๋ฅผ ํ–ˆ์–ด์•ผ ํ–ˆ๋˜ ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™๋‹ค.


๊ฐœ์„ 

function solution(s) {
  let answer = 0;

  for (let i = 0; i < s.length; i++) {
    if (s[i] === "(") answer += 1;
    else answer -= 1;
    if (answer < 0) answer = false;
    console.log(answer);
  }
  return answer === 0;
}

์ฒซ ๋ฒˆ์งธ ๋ฐฉํ–ฅ
1. for๋ฌธ์„ ํ†ตํ•ด s[i]์˜ ๊ฐ’๋“ค ์ˆœํšŒํ•˜์—ฌ "(" ์กฐ๊ฑด๊ณผ ๋งž๋Š”์ง€ ๋น„๊ต
2. ๋น„๊ต๋ฅผ ํ†ตํ•ด answer ๊ฐ’์„ ์ฆ๊ฐ
3. ์ฆ๊ฐ ๋œ ๋งˆ์ง€๋ง‰ ๊ฐ’์ด 0์ด ๋œ๋‹ค๋ฉด true๋ฅผ ๋ฐ˜ํ™˜.

๋ฌธ์ œ์ 
1. for๋ฌธ์„ ์ˆœํšŒํ•˜๋Š” ๋งˆ์ง€๋ง‰ if ์กฐ๊ฑด์—์„œ answer์— false๋ฅผ ํ• ๋‹น ํ•ด๋ฒ„๋ ค์„œ ๋ฌธ์ œ๊ฐ€ ๋œ ๊ฒƒ.
2. ๊ทธ๋ ‡๊ฒŒ๋˜๋ฉด ์ง„ํ–‰๋˜๋Š” ๋„์ค‘ answer ๊ฐ’์ด ํ•œ๋ฒˆ false๋กœ ์„ ์–ธ ๋๋‹ค๊ฐ€ ๋‹ค์‹œ for๋ฌธ์€ ์ˆœํšŒํ•˜๊ฒŒ ๋จ.
์ฆ‰, false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ํ• ๋‹น๋˜์–ด ๊ณ„์† ์ˆœํšŒํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
1. answer์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ฐ˜๋ณต์„ ๋น ์ ธ๋‚˜์™€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ.

function solution(s) {
  let answer = 0;

  for (let i = 0; i < s.length; i++) {
    if (s[i] === "(") answer += 1;
    else answer -= 1;
    if (answer < 0) return false; // ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ false ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ฐ˜๋ณต ์ข…๋ฃŒ.
  }

  return answer === 0; // ์ „์ฒด ๋ฌธ์ž์—ด ๊ฒ€์‚ฌ ํ›„ answer ๊ฐ’์ด 0์ด๋ฉด true, ์•„๋‹ˆ๋ฉด false ๋ฐ˜ํ™˜
}
  1. continue ์ง€์‹œ์ž๋ฅผ ํ†ตํ•ด ์กฐ๊ฑด์ด ์•ˆ ๋งž๋Š” ๋ฐ˜๋ณต์€ ๋น ์ ธ๋‚˜์™€ ๋‹ค์Œ ์กฐ๊ฑด์œผ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฐฉ์‹.
function solution(s){
    let open = 0;
    for(let i=0; i<s.length; i++) {
        if(s[i] === '(') {
            open++;
            continue;
        }
        if(!open) return false;
        open--;
    }
    return open ? false : true;
}

์ด๋ฒˆ ๊ธฐํšŒ๋ฅผ ํ†ตํ•ด continue ์ง€์‹œ์ž๋ฅผ ์ฒ˜์Œ ์•Œ๊ฒŒ ๋๋Š”๋ฐ,,
๋ฐ˜๋ณต๋ฌธ ๋น ์ ธ๋‚˜์˜ค๊ธฐ

๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ

continue ์ง€์‹œ์ž๋Š” break์˜ '๊ฐ€๋ฒผ์šด ๋ฒ„์ „โ€™์ž…๋‹ˆ๋‹ค.
continue๋Š” ์ „์ฒด ๋ฐ˜๋ณต๋ฌธ์„ ๋ฉˆ์ถ”์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋Œ€์‹ ์— ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ดํ„ฐ๋ ˆ์ด์…˜์„ ๋ฉˆ์ถ”๊ณ  ๋ฐ˜๋ณต๋ฌธ์ด ๋‹ค์Œ ์ดํ„ฐ๋ ˆ์ด์…˜์„ ๊ฐ•์ œ๋กœ ์‹คํ–‰์‹œํ‚ค๋„๋ก ํ•ฉ๋‹ˆ๋‹ค(์กฐ๊ฑด์„ ํ†ต๊ณผํ•  ๋•Œ).

continue๋Š” ํ˜„์žฌ ๋ฐ˜๋ณต์„ ์ข…๋ฃŒ์‹œํ‚ค๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ€๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๋ฐ˜๋ณต๋ฌธ์€ continue๋ฅผ ์‚ฌ์šฉํ•ด ํ™€์ˆ˜๋งŒ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

for (let i = 0; i < 10; i++) {

  // ์กฐ๊ฑด์ด ์ฐธ์ด๋ผ๋ฉด ๋‚จ์•„์žˆ๋Š” ๋ณธ๋ฌธ์€ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  if (i % 2 == 0) continue;

  alert(i); // 1, 3, 5, 7, 9๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ์ถœ๋ ฅ๋จ
}

i๊ฐ€ ์ง์ˆ˜์ด๋ฉด continue๊ฐ€ ๋ณธ๋ฌธ ์‹คํ–‰์„ ์ค‘๋‹จ์‹œํ‚ค๊ณ  ๋‹ค์Œ ์ดํ„ฐ๋ ˆ์ด์…˜์ด ์‹คํ–‰๋˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค(i๊ฐ€ ํ•˜๋‚˜ ์ฆ๊ฐ€ํ•˜๊ณ , ๋‹ค์Œ ๋ฐ˜๋ณต์ด ์‹คํ–‰๋จ).
๋”ฐ๋ผ์„œ alert ํ•จ์ˆ˜๋Š” ์ธ์ˆ˜๊ฐ€ ํ™€์ˆ˜์ผ ๋•Œ๋งŒ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.


๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

#1

function solution(s){
    let cum = 0
    for (let paren of s) {
        cum += paren === '('? 1: -1
        if(cum < 0) {
            return false
        }
    }
    return cum === 0? true: false;
}
  1. for of ๋ฌธ๊ณผ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ์‹์„ ์ข€ ๋” ์ถ”๋ฆด ์ˆ˜ ์žˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

๐Ÿ˜ถ ์ •๋ฆฌ

  1. ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•
  2. ๋ฐ˜๋ณต ์กฐ๊ฑด continue ์ง€์‹œ์ž๋ฅผ ํ†ตํ•œ ์กฐ๊ฑด ๋„˜๊ธฐ๊ธฐ
profile
๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌํ•  ์ค„ ์•„๋Š” ๊ฐœ๋ฐœ์ž!

0๊ฐœ์˜ ๋Œ“๊ธ€