[프로그래머스] 연습 문제 - 올바른 괄호

2020. 6. 22. 20:17·알고리즘

문제 설명

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

  • ()() 또는 (())() 는 올바른 괄호입니다.
  • )()( 또는 (()( 는 올바르지 않은 괄호입니다.

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

입출력 예

sanswer

()() true
(())() true
)()( false
(()( false

입출력 예 설명

입출력 예 #1,2,3,4
문제의 예시와 같습니다.

 

 boolean solution(String s) {
        boolean answer = false;
        char[] chars = s.toCharArray();

        Stack stack = new Stack();

        if(chars[0] == ')')
        {
            return answer;
        }

        for (char i : chars
        ) {
            if(i == '(')
            {
                stack.push(i);
            }
            else if (i == ')' && !stack.isEmpty())
            {
                stack.pop();
            }
        }
        if(stack.empty())
        {
            answer = true;
            return answer;
        }
        else
        {
            return answer;
        }
    }

 

처음에는 ArrayList를 이용하여 풀었으나, 효율성 테스트에서 떨어졌다. 그 이후 스택을 사용하는 방법으로 변경하고,

처음부터 닫는 괄호가 나올경우 무조건 올바른 괄호가 나올 수 없으므로 그에대한 처리 후에, 여는 괄호가 나올 경우 스택에 추가하고 닫는 괄호가 나올 경우 스택에 추가했던 여는 괄호를 삭제한다. 이 과정이 끝난 후에 스택에 값이 남아있을 경우, 올바른 괄호가 아니고, 스택이 비어있을 경우 올바른 괄호이다!

'알고리즘' 카테고리의 다른 글

[프로그래머스] LEVEL 2 - 더 맵게  (0) 2020.06.30
[프로그래머스] LEVEL2 - 카펫  (1) 2020.06.24
[프로그래머스] Summer/Winter Coding(~2018) 스킬트리 문제 풀이  (0) 2020.05.08
[백준] 카카오 코드 페스티벌 15953번: 상금헌터  (0) 2020.03.10
[프로그래머스] 스킬 체크 레벨 1 - 모의고사  (0) 2020.03.09
'알고리즘' 카테고리의 다른 글
  • [프로그래머스] LEVEL 2 - 더 맵게
  • [프로그래머스] LEVEL2 - 카펫
  • [프로그래머스] Summer/Winter Coding(~2018) 스킬트리 문제 풀이
  • [백준] 카카오 코드 페스티벌 15953번: 상금헌터
HWBB
HWBB
흥미주도개발자
  • HWBB
    코딩공부방
    HWBB
  • 전체
    오늘
    어제
    • 분류 전체보기 (161)
      • 알고리즘 (61)
      • Android (27)
      • Kotlin (0)
      • Java (2)
      • Design Pattern (2)
      • React Native (1)
      • Python (0)
      • TIL (20)
      • Unity (0)
      • React (2)
      • AWS (0)
      • Git (11)
      • MFC (1)
      • Spring (4)
      • Computer Science (4)
      • Vue (4)
      • Infra (4)
      • 박현우 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 승윤이
  • 공지사항

  • 인기 글

  • 태그

    Kotlin
    코딩테스트
    github
    Android
    안드로이드 스튜디오
    자바
    Java
    baekjoon
    안드로이드
    깃허브
    programmers
    알고리즘
    코틀린
    프로그래머스
    coding
    GIT
    C++
    algorithm
    android studio
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
HWBB
[프로그래머스] 연습 문제 - 올바른 괄호
상단으로

티스토리툴바