본문 바로가기

Coding Test

[Programmers] 올바른 괄호

728x90
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=python3 

 

프로그래머스

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

programmers.co.kr

 

풀이과정

1. 시작은 "(" (열린 괄호)로 한다.
2. ")" (닫힌 괄호)가 나오기 전까지 "("를 쌓는다. ")"가 나오면 "("를 꺼낸다.
3. 체크 종료 후 "("가 남아 있으면 올바르지 않은 괄호, False를 반환한다.

 

Script

def solution(s):
    if s[0] == ")":
        return False

    checks = []
    for c in list(s):
        if c == "(":
            checks.append(c)
        else:
            checks.pop() if checks else None
    answer = True if len(checks) == 0 else False
    return answer

 

다른 풀이

메모리 효율성을 위해 list가 아닌 숫자로 체크하는 것이 더 좋은 방법 같다.

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
728x90
반응형

'Coding Test' 카테고리의 다른 글

[Programmers] 완주하지 못한 선수 (python)  (1) 2023.01.16
[Programmers] 더 맵게  (0) 2022.11.01
[Programmers] 가장큰수  (0) 2022.08.06
[Programmers] 도둑질  (0) 2022.08.04
[Programmers] 기능개발  (0) 2022.07.20