개발후라이
개발후라이
개발후라이
  • 분류 전체보기 (287) N
    • Web Front End (76) N
      • Javascript & Typescript (26)
      • React (12)
      • Vue (4)
      • Nodejs (1)
      • HTML (6)
      • CSS (8) N
      • HTTP (6)
      • 책 - Review (8)
    • TIL (0)
    • Problem Solved (135)
      • 알고리즘 (4)
      • BOJ (67)
      • Programmers (8)
      • HackerRank (33)
      • LeetCode (23)
    • 회고 (4)
      • 오늘의 회고 (16)
      • 주간 회고 (15)
      • 월간 회고 (7)
      • WakaTime (9)
    • Git (3)
    • 기타 (15)
      • 취업 (5)
      • 자격증 (1)

블로그 메뉴

  • GitHub
  • LinkedIn
  • 홈

인기 글

태그

  • 자바스크립트
  • JavaScript
  • 노개북
  • 개발자
  • TypeScript
  • 릿코드
  • 오늘의회고
  • 노마드북클럽
  • 프론트엔드
  • 회고

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
개발후라이

개발후라이

[HackerRank][Javascript] Balanced Brackets
Problem Solved/HackerRank

[HackerRank][Javascript] Balanced Brackets

2020. 8. 21. 14:40
반응형

문제 - Balanced Brackets

문제 설명

괄호들이 짝이 맞는지 확인하는 문제

1번 풀이

  • 주어진 괄호인 {[()]}의 여는 괄호들을 닫는 괄호로 하나씩 치환해 배열에 추가한다.
  • 닫는 괄호가 나오고 배열의 마지막 문자와 같으면 배열에 pop하여 삭제한다.
  • 위의 두 조건에도 들지 않으면 짝이 맞지 않는 것이므로 NO를 반환한다.
  • 여는 괄호의 숫자가 많을 때 NO를 반환하기 위해 마지막에 남은 문자의 개수로 YES와 NO를 판단하여 반환한다.

2번 풀이

  • opens와 closes들을 배열로 묶고, 객체를 사용해 닫는 괄호는 key로, 여는 괄호는 value로 묶는다.
  • 반복문을 돌며 1번 풀이와 동일하게 여는 괄호이면 배열에 추가한다.
  • 닫는 괄호가 나오면 pop하여 짝이 맞는지를 만들었던 객체를 통해 판별한다.
  • 마지막 반환 부분은 1번 풀이와 동일하다.

성공 코드

function isBalanced(s) {
  let arr = [];

  // 1번 풀이
  for (let i = 0; i < s.length; i++) {
    if (s[i] === '{') arr.push('}');
    else if (s[i] === '[') arr.push(']');
    else if (s[i] === '(') arr.push(')');
    else if (s[i] === arr[arr.length - 1]) arr.pop();
    else return "NO";
  }

  // 2번 풀이 
  const opens = ['(', '{', '['];
  const closes = [')', '}', ']'];
  const map = {
      ')': '(',
      '}': '{',
      ']': '['
  };

  for (let i = 0; i < s.length; i++) {
      if (opens.includes(s[i])) arr.push(s[i]);

      if (closes.includes(s[i])) {
          const paired = arr.pop();
          if (map[s[i]] !== paired) return 'NO';
      }
  }

  return arr.length ? "NO" : "YES";
}
반응형
저작자표시 (새창열림)
    'Problem Solved/HackerRank' 카테고리의 다른 글
    • [HackerRank][Javascript] Queues: A Tale of Two Stacks
    • [HackerRank][Javascript] Mark and Toys
    • [HackerRank][Javascript] Bubble Sort
    • [HackerRank][Javascript] Common Child
    개발후라이
    개발후라이
    어제보다 오늘 발전하기 위한 공간 https://github.com/choisohyun

    티스토리툴바