알고리즘/baekjoon

[알고리즘/baekjoon] 4949_균형잡힌 세상(python)

천뿌니 2021. 10. 24. 21:23
728x90

문제

https://www.acmicpc.net/problem/4949

 

4949번: 균형잡힌 세상

하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마

www.acmicpc.net

# 이 문제는 조건을 이해할수 있다면 쉬운 문제이다.

# 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다.

# 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다.

# 입력의 종료 조건으로 맨 마지막에 점(.)이 들어온다.

 

정답

 

# list 범위 에러가 발생한 이유 #

# if len(stack) != 0 and stack[-1] == "(":

# if len(stack) != 0 and stack[-1] == "[":

# 위 조건문에서 stack[-1] 부분과 len(stack) 부분을 반대로 적으면 list 범위 에러가 발생한다.

# 예를 들면 ) ( 입력이 들어왔을 때 stack이 비어있는데 stack[-1] 을 찾는것은 범위 에러가 발생한다.

# 그래서 stack의 길이를 먼저 비교해서 오류를 방지해준다. (and 문이기 때문에 첫 조건이 틀리면 그 if문을 틀림.)

 

* 전체 코드가 필요하신 분은 아래 github 주소를 방문해주세요

https://github.com/JunSeokCheon/Codingtest/blob/master/CLASS2/4949_%EA%B7%A0%ED%98%95%EC%9E%A1%ED%9E%8C%20%EC%84%B8%EC%83%81.py

 

GitHub - JunSeokCheon/Codingtest: python for codingtest

python for codingtest. Contribute to JunSeokCheon/Codingtest development by creating an account on GitHub.

github.com