Supersett
개발자의 하루
Supersett
Blockchain Dev
전체 방문자
오늘
어제
  • 분류 전체보기
    • 프론트
    • 회사생활
    • 블록체인
    • 프로젝트
      • 창업 프로젝트 (DRF + AWS)
      • Spring 프로젝트
    • [중앙대]멋쟁이 사자처럼
    • 기술서적
    • Problem Solving
      • 알고리즘
    • 일기장
      • 하루 정리
      • 삽질 일기
      • 조급할 때 눌러보기

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 니어프로토콜
  • 초보개발자
  • 디프만16기
  • DEPROMEET
  • 블록체인정보가공
  • Near Scan
  • 비트코인
  • 면접준비
  • 멋쟁이 사자처럼 서류
  • 자바스크립트
  • 취업준비
  • 멋쟁이 사자처럼 면접
  • 프로젝트
  • Near Explorer
  • 구글소셜로그인
  • 자바
  • Luniverse
  • 멋쟁이 사자처럼
  • 국비교육
  • Multichain API
  • 컴퓨터학원
  • 글리치해커톤
  • java
  • 국비
  • 국비지원
  • 멋쟁이사자처럼 중앙대
  • 블록체인 서버설계
  • 해커톤
  • 신입개발자
  • 멋사 중앙대

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Supersett

개발자의 하루

[백준][파이썬] 2504 - 괄호의 값 (런타임에러 발생..해결)
Problem Solving/알고리즘

[백준][파이썬] 2504 - 괄호의 값 (런타임에러 발생..해결)

2022. 7. 12. 12:31

런타임에러!! IndexError 발생!!

런타임 에러 (IndexError) 왜 발생했을까?

답은 스택 배열이 비어있는 상태에서 stack[-1]의 값을 조회할때 에러가 발생하는것이었다. 비어있는 상태라면 조회를 할수없게 코드를 분리해서 해결하였다.

 

파이썬에서의 Stack 은 List를 활용하자!

append() : 마지막에 값추가

pop() : 마지막에 들어온 값 제거 (반환받아서 값을 사용할수도 있음)

list[-1] : 제일 top에 있는 값 조회 가능 ( 비어있을때 조회시 에러 발생하므로 유의할것)

not list : 비어있는지 확인

 

입력값을 받을때 rstrip()을 꼭 사용하자! (주의)

1
2
3
t=sys.stdin.readline()
 
t=sys.stdin.readline().rstrip()
cs

위 아래의 입력된 값이 달라서 len(입력값)에 차이가 있었다. 주의하자

 

제출 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import sys
t=sys.stdin.readline().rstrip()
stack=[]
answer=0
temp=1
 
for i in range(len(t)):
    if t[i]=="(":
        temp*=2
        stack.append(t[i])
    elif t[i]=="[":
        temp*=3
        stack.append(t[i])
    elif t[i]==")":
        if not stack:
            answer=0
            break
        if stack[-1]=="[":
            answer=0
            break
        if t[i-1]=="(":
            answer+=temp
        stack.pop()
        temp//=2
    else:
        if not stack:
            answer = 0
            break
        if stack[-1] == '(':
            answer = 0
            break
        if t[i-1] == '[':
            answer += temp
        temp //= 3
        stack.pop()
 
if stack:
    print(0)
else:
    print(answer)
cs

 

 

'Problem Solving > 알고리즘' 카테고리의 다른 글

[알고리즘][왜이거써요?]list 와 deque, 분기를 잡자, 자주쓰는 list 함수  (1) 2022.10.06
[백준][파이썬] 1662 - 압축  (0) 2022.07.13
[백준] 1931 - 회의실 배정 (그리디 알고리즘)  (0) 2022.07.08
[백준]1946 - 신입사원  (0) 2022.07.07
[백준] [파이썬] 11497 - 통나무 건너뛰기  (1) 2022.07.06
    'Problem Solving/알고리즘' 카테고리의 다른 글
    • [알고리즘][왜이거써요?]list 와 deque, 분기를 잡자, 자주쓰는 list 함수
    • [백준][파이썬] 1662 - 압축
    • [백준] 1931 - 회의실 배정 (그리디 알고리즘)
    • [백준]1946 - 신입사원
    Supersett
    Supersett
    하루를 돌아보고 공부한 티를 내기 위해 블로그를 만들었습니다.

    티스토리툴바