문제
인형이 쌓인 board에서 맨 위에 인형 하나씩 moves에 따라 꺼낸다. 꺼낸 인형들은 바구니에 담는데,
바구니에 담긴 인형들은 연달아 같은 인형이 담길 경우 제거된다. 제거된 인형의 개수는?
문제 바로가기
코드
def solution(board, moves):
bucket = []
for j in moves: # 각 열에 있는 인형들 꺼내서 바구니에 담기
for i in range(len(board)):
if board[i][j-1] != 0:
bucket.append(board[i][j-1])
board[i][j-1] = 0
break
cnt = 0
while True:
long = len(bucket) # 더이상 인형제거가 발생하지 않는지 확인하기 위해
for i in range(1,len(bucket)):
if bucket[i-1] == bucket[i]: # 앞이랑 같은 인형이면 제거
cnt += 2
bucket.pop(i-1)
bucket.pop(i-1)
break
if long == len(bucket) or not bucket: # 인형제거 없으면 while 멈춤
break
return cnt
발전된 코드, 바구니에 넣을 때 검사해서 제거
# 스택
def solution(board, moves):
bucket = []
cnt = 0
for j in moves:
for i in range(len(board)):
if board[i][j-1] != 0:
bucket.append(board[i][j-1])
board[i][j-1] = 0
if len(bucket)>1 and bucket[-1]==bucket[-2]:
bucket.pop(-1)
bucket.pop(-1)
cnt +=1
break
return cnt*2
1h 10m 정도 걸렸다.
'⚡️algorithm' 카테고리의 다른 글
[문자열] 프로그래머스 lv2. 방금그곡 (0) | 2022.05.31 |
---|---|
[조합, 자료구조] 프로그래머스 lv2. 후보키 (0) | 2022.05.31 |
[문자열] 프로그래머스 lv1. 숫자 문자열과 영단어 (0) | 2022.05.28 |
[문자열] 프로그래머스 lv1. 다트게임 (정규표현식, 10치환, isdecimal, 숫자찾기) (0) | 2022.05.26 |
[그리디] 이코테. 큰 수의 법칙 (0) | 2022.05.25 |