-
코딩테스트 연습> 연습문제> 올바른 괄호ALGORITHM/Programmers 2020. 7. 12. 15:56728x90
<문제링크: https://programmers.co.kr/learn/courses/30/lessons/12909>
문제설명: 배열 s 에 '(' 또는 ')'가 들어있고, 여는 괄호와 닫는 괄호가 '()'로 만나면 제거해 준다. 이 때, s 배열에 원소가 남아 있다면 짝이 맞지 않으므로 False를 반환하고, 빈 배열로 남는다면 True를 반환한다.
[1차 시도]
def solution(s): bin = [] for i in s: if not bin and i==')': return False if i=='(': bin.append(i) else: bin.pop() if bin: return False return True
풀이: s 배열을 for 문으로 돌면서 '('를 저장할 빈 배열을 만든다. 만약 저장할 배열이 비어있는 상태로 원소 i가 닫는 괄호 ')' 라면, 짝이 맞지 않으므로 즉시 False를 return한다.
이 조건문을 통과해서 i가 여는 괄호 '(' 라면, bin 리스트가 비어있는지 여부를 떠나서 무조건 저장한다.
그리고 만약 원소 i가 닫는 괄호 ')' 라면, 이 때는 bin에 무조건 '(' 원소가 있으므로, 바로 pop을 해서 여는 괄호 1개를 제거해준다.
for문을 다 돌고 마지막에 bin 리스트가 비어있지 않다면, False를 반환, 비어있다면, True를 반환한다.
채첨결과: 정확성과 효율성 테스트 모두 잘 통과한다.
'ALGORITHM > Programmers' 카테고리의 다른 글
코딩테스트 연습> 연습문제> 숫자의 표현 (0) 2020.07.15 코딩테스트 연습> 연습문제> 피보나치 수 (0) 2020.07.13 코딩테스트 연습> 힙(Heap)> 더 맵게 (0) 2020.07.03 코딩테스트 연습> 연습문제> 핸드폰 번호 가리기 (0) 2020.07.01 코딩테스트 연습> 해시> 완주하지 못한 선수 (0) 2020.06.29