728x90
https://school.programmers.co.kr/learn/courses/30/lessons/64061?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제는 여기서 확인할 수 있다.
def solution(board, moves):
ans_stack = []
answer = 0
finished = 1
for m in moves:
for id, row in enumerate(board):
if row[m - 1] != 0:
ans_stack.append(row[m - 1])
row[m - 1] = 0
break
# 같은 거 터뜨리기
while (finished != 0):
finished = 0
for i in range(len(ans_stack)):
if ((i != 0) and (ans_stack[i] == ans_stack[i - 1])):
ans_stack.pop(i)
ans_stack.pop(i - 1)
answer += 2
finished = 1
break
return answer
for문 안에서 pop이나 remove 쓸 때 range()로 접근할 경우 i값은 list의 변화를 인지하지 못한다는 것을 알게 해준 문제이다.
그래서 원래 return 바로 위에서 break를 안 쓰고 끝까지 가도록 구현했더니, list index out of range 오류가 떴다...ㅋㅋㅋㅋㅋ
pop을 할 때마다 처음부터 다시 보도록 코드를 바꾸니까 다행히 잘 돌아갔다!
728x90
'프로그래머스' 카테고리의 다른 글
[Lv.1][python] 완주하지 못한 선수 (0) | 2022.08.07 |
---|---|
[Lv.1][python] 같은 숫자는 싫어 (0) | 2022.08.07 |
[Lv.1][python]신고 결과 받기 (0) | 2022.08.02 |
오픈채팅방 (0) | 2022.07.01 |
문자열 압축 (0) | 2022.07.01 |