본문으로 건너뛰기
yceffort
PostsSeriesTagsAbout🧪 Research
EN

Tweaks

theme
accent palette
film grain
minimal mode
BACK TO INDEX
◆ ESSAY
--min
--year
KOoriginal

mailMail icongithubtwitter
yceffort
•
© 2026
•
https://yceffort.kr
BACK TO INDEX
◆ ESSAY

Codility - Brackets

avatar
yceffort
2020-06-25 · 2분
2min
2020year
KOoriginal
algorithm

Brackets

문제

문자열 S가 주어지고, S는 다음 경우 일 때 참을 반환해야 한다.

  • S가 비어있는 경우
  • (U) or [U] or {U} 의 형태로 괄호안에 문자열이 있는 경우
  • 괄호가 짝이 맞게 닫혀있는 경우

예를 들어

{[()()]}는 괄호가 알맞게 들어있지만, ([)()]는 그렇지 못하다. (짝은 맞지만 잘못닫혀있음)괄호가 올바르게 형성되어 있는 경우 1, 아니면 0을 리턴하자.

풀이

function solution(S) {
  const splited = S.split('')

  const stack = []

  for (let i of splited) {
    // 여는 거
    if (i === '{' || i === '[' || i === '(') {
      stack.push(i)
    } else {
      if (stack.size === 0) return 0

      // 닫는 것이라면 가장 최근에 열었던 것이랑 비교 한다.
      const pop = stack.pop()

      if (i === ')') {
        if (pop !== '(') {
          return 0
        }
      }

      if (i === '}') {
        if (pop !== '{') {
          return 0
        }
      }

      if (i === ']') {
        if (pop !== '[') {
          return 0
        }
      }
    }
  }

  return stack.length === 0 ? 1 : 0
}

여는 괄호라면 stack에 넣고, 닫는 괄호라면 스택에 맨지막 괄호와 비교해서 적절한 괄호인지 확인한다.

https://app.codility.com/demo/results/training9MREFG-CYW/

관련 글

  • #javascript#algorithm

    자바스크립트로 메모이제이션 구현하기

    까먹지 않게 기억해두기

    2020-11-23·1분
  • #algorithm

    프로그래머 기초 수학 2-3 - 유리수, 무리수, 실수

    유리수, 무리수, 실수

    2020-07-29·5분
  • #algorithm

    프로그래머 기초 수학 2-2 - 기수법

    기수법

    2020-07-24·3분
  • #algorithm#mathematics

    프로그래머 기초 수학 2-1 - 정수

    정수

    2020-07-23·4분

새 글을 놓치고 싶지 않으시다면 RSS로 구독해 주세요.

RSS 구독 →

yceffort — 프론트엔드 엔지니어입니다. 발표·기술 자문·기고 문의는 이곳에서 받고 있습니다.

← Back to the blogIssue on GitHub →