문제. 프로그래머스 올바른 괄호
문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- ()() 또는 (())() 는 올바른 괄호입니다.
- )()( 또는 (()( 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예시
s | answer |
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
출처 : 프로그래머스 올바른 괄호
나의 풀이 in Python3
#[Programmers] 올바른 괄호
def solution(s):
ls = list(s)
stack = []
for i in ls:
if i =='(':
stack.append(i)
else:
if len(stack):
stack.pop()
else: return False
return len(stack) ==0
알고리즘 설명
- LIFO(Last-IN-First-Out) 개념인 스택 활용
- s의 리스트를 for문으로 전개
- 값이 '('일 때, stack 리스트에 추가하고 ')'일 때, stack에 들어간 값이 0보다 클 경우 stack.pop()으로 제거하고 짝을 맞춰줌
- 아닐 경우에는 짝이 안맞으므로 False 리턴
다른 사람의 풀이
def is_pair(s):
# 함수를 완성하세요
x = 0
for w in s:
if x < 0:
break
x = x+1 if w=="(" else x-1 if w==")" else x
return x==0
짝에 맞으면 0, 짝이 맞지 않다면 0이 아니게 되므로 올바른 괄호라는 문제에 적합한 코드라고 생각하여 가져왔습니다.
※ 괄호 문제는 많은 코딩테스트 문제에서 자주 나오는 단골 문제이므로 잘 정리해야 합니다.
반응형
'Tests > 프로그래머스' 카테고리의 다른 글
[Programmers] SQL > JOIN > 없어진 기록 찾기 (1) | 2021.04.13 |
---|---|
[Programmers] SQL > JOIN > 보호소에서 중성화한 동물 (0) | 2021.04.12 |
[Programmers] 프로그래머스 땅따먹기 (0) | 2021.03.29 |
[Programmers] 프로그래머스 2021 카카오 코딩테스트 메뉴 리뉴얼 (0) | 2021.03.09 |
[Programmers] 프로그래머스 3진법 뒤집기 (0) | 2021.03.06 |
댓글