728x90
programmers.co.kr/learn/courses/30/lessons/64061?language=python3
접근
스택을 이용하면 쉽게 풀 수 있을 것이라고 생각했다.
구현
스택과 보드의 길이를 생성한다.
이후 크레인의 움직이는 정보가 담긴 moves에서 정수 x를 -1로 한 후에 세로 축 탐색을 진행한다
만약 숫자가 나오고 스택이 비었다면 바로 스택에 넣고
스택이 비어있지 않다면 스택의 맨 위와 현재 정수를 비교하여 같다면 최종해 +2 (한 번에 2개가 터짐)
이후 스택의 top을 pop한다.
만약 숫자가 같지않다면 그대로 스택에 넣어준다.
위 과정을 거치고 그 자리는 0으로 변경한다.
stack = []
N = len(board)
for x in moves:
x -= 1
for y in range(N):
if board[y][x] != 0:
if not stack:
stack.append(board[y][x])
else:
if stack[-1] == board[y][x]:
answer += 2
stack.pop()
else:
stack.append(board[y][x])
board[y][x] = 0
break
전체 코드
def solution(board, moves):
answer = 0
stack = []
N = len(board)
for x in moves:
x -= 1
for y in range(N):
if board[y][x] != 0:
if not stack:
stack.append(board[y][x])
else:
if stack[-1] == board[y][x]:
answer += 2
stack.pop()
else:
stack.append(board[y][x])
board[y][x] = 0
break
return answer
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[Level 1] 2016년 (0) | 2021.02.19 |
---|---|
[Level 1] 문자열 내 마음대로 정렬하기 (0) | 2021.02.19 |
[고득점 KIT] 프린터 cpp (0) | 2021.02.12 |
[고득점 KIT] 다리를 지나는 트럭 cpp (0) | 2021.02.11 |
[고득점 KIT] 주식가격 (0) | 2021.02.09 |