728x90
반응형
문제:
풀이방법:
문제에서 주어진대로 구현을 해도 되지만 stack을 활용해서 풀었다. 각 열별로 newboard에 stack으로 정리를 하며, move를 이용해서 각 열에 있는 값들을 pop을 해서 빼온다. move에 해당하는 열에 값이 없다면 continue로 행동을 넘기며 값이 있다면 basket에 값을 넣는다.
basket에 값을 넣었다면 위의 두 값이 같은지 확인하고 같다면 pop을 사용해서 빼고 answer 카운트를 2 증가시킨다. (두 값이 같아 없어지는 행위를 세는 것이 아니라 없어진 것의 개수를 구하는 것이므로 2를 더하는게 맞다.)
이 행위를 moves에 있는 행동대로 다 하고 난 뒤의 answer를 반환한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
def solution(board, moves):
answer = 0
newboard=[[]for _ in range(len(board))]
while len(board):
last=board.pop()
for i in range(len(last)):
if last[i]==0:
continue
newboard[i].append(last[i])
basket=[]
for move in moves:
if len(newboard[move-1])==0:
continue
basket.append(newboard[move-1].pop())
if len(basket)>=2 and basket[-1]==basket[-2]:
basket.pop()
basket.pop()
answer+=2
return answer
|
cs |
문제링크:
https://programmers.co.kr/learn/courses/30/lessons/64061
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[BOJ]5014. 스타트링크 (0) | 2020.05.07 |
---|---|
[2019 Kakao winter internship]튜플 (0) | 2020.04.23 |
[BOJ]2863. 이게 분수? (0) | 2020.04.16 |
[BOJ]7785. 회사에 있는 사람 (0) | 2020.04.14 |
[BOJ]1718. 암호 (0) | 2020.04.09 |