https://school.programmers.co.kr/learn/courses/30/lessons/12909
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해당 문제는 여러 코딩테스트에서 자주 출제되는 스택 유형 문제이다.
여러번 풀어봐서 어떻게 푸는지 알고있긴하지만, 정답코드의 예외처리와 삼항연산자를 쓴 답안이 너무 멋있는 것같아 주기적으로 학습하고자 글을 기재합니다.
작성 코드
def solution(s):
stack = []
for i in s:
if i == '(': # '('는 stack에 추가
stack.append(i)
else: # i == ')'인 경우
if stack == []: # 괄호 짝이 ')'로 시작하면 False 반환
return False
else:
stack.pop() # '('가 ')'와 짝을 이루면 stack에서 '(' 하나 제거
return stack==[]
다른 인원 작성 코드 ( 프로그래머스 다른 사람 풀이 )
# 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
# 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
def is_pair(s):
pair = 0
for x in s:
if pair < 0: break
pair = pair + 1 if x == "(" else pair - 1 if x == ")" else pair
return pair == 0
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( is_pair("(hello)()"))
print( is_pair(")("))
# 문제가 개편되었습니다. 이로 인해 함수 구성이나 테스트케이스가 변경되어, 과거의 코드는 동작하지 않을 수 있습니다.
# 새로운 함수 구성을 적용하려면 [코드 초기화] 버튼을 누르세요. 단, [코드 초기화] 버튼을 누르면 작성 중인 코드는 사라집니다.
# def is_pair(s):
# x = [without for without in s if without == '(' or without == ')']
# ind_x = [ i for i,n in enumerate(x) if n == '(' ]
# ind_y = [ i for i,n in enumerate(x) if n == ')' ]
# if len(ind_x) == len(ind_y):
# for value in ind_x:
# if value%2 != 0:
# return False
# return True
# else:
# return False
def is_pair(s):
st = list()
for c in s:
if c == '(':
st.append(c)
if c == ')':
try:
st.pop()
except IndexError:
return False
return len(st) == 0
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( is_pair("(hello)()"))
print( is_pair("()()()"))
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[PCCP 모의고사 1] 2번 - Python (0) | 2023.10.14 |
---|---|
[PCCP 모의고사 1] 1번 - Python (0) | 2023.10.14 |
Lv2.(깊이/너비 우선 탐색) 게임 맵 최단거리 - C++ (0) | 2023.05.06 |
Lv1.(완전탐색) 모의고사 - Python,C++ (0) | 2023.05.05 |
Lv.3 ( 해시 ) 베스트앨범 - C++ (0) | 2023.05.05 |