[Programmers] 올바른 괄호 - Java (배열 or 스택)

728x90
반응형
SMALL

# 문제 설명

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

 

예를 들어

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

 

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때,

문자열 s가 올바른 괄호이면 true를 return 하고,

올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

 

 


 

[제한사항]

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

 

[입출력 예]


 

 

## 문제 정리

  • 괄호 짝 맞추기
    • 주어진 문자열 반복문 돌리면서
    • '(' 나오면 count +1
    • ')' 나오면 count -1
    • 반복문 중간에 count 값이 음수면 ')' 가 먼저 나온 상태니까 바로 false
    • 반복문 종료 후 count 값이 0인지 확인

 

 

 


 

## 풀이

 

[소스]

https://github.com/jeonghoonb/cote-programmers/blob/main/src/stackAndQueue/No_12909.java

 

GitHub - jeonghoonb/cote-programmers: Coding Test 문제 풀기 By Programmers

Coding Test 문제 풀기 By Programmers. Contribute to jeonghoonb/cote-programmers development by creating an account on GitHub.

github.com


 

배열 사용

8 ~ 20 Line

괄호 열기, 닫기를 한개의 쌍으로 ++, -- 하여 0이면 쌍이 맞는 걸로 간주

 

 

17 Line

count가 음수인 것은 괄호 닫기가 먼저 나온 경우기에 바로 false 하기 위해 break

 

 

 

 


 

스택 사용

 

10 ~ 24 Line

Stack에 괄호를 하나씩 넣으면서 쌍이 맞으면 Stack을 초기화

 

 

11 ~ 12 Line

Stack이 비어 있는 상태에서 닫는 괄호가 나왔으니 바로 false

 

 

26 Line

괄호 쌍이 맞으면 Stack을 초기화 하기에 비어있는 상태면 괄호 쌍이 맞은 것으로 간주



문제 원본

https://school.programmers.co.kr/learn/courses/30/lessons/12909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

728x90
반응형
LIST