코딩테스트 연습 - 크레인 인형뽑기 게임
[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4
programmers.co.kr
풀이 (첫 번째 시도) - 실패
def solution(board, moves):
answer = 0
stack = list()
for i in moves:
new_data = board[i - 1].pop()
if new_data == 0:
continue
if stack and stack[-1] == new_data:
answer += 2
del stack[-1]
else:
new_data = stack.append(new_data)
return answer
다른 방법
def solution(board, moves):
stacklist = []
answer = 0
for move in moves:
for i in range(len(board)):
if board[i][move-1] != 0:
stacklist.append(board[i][move-1])
board[i][move-1] = 0
if len(stacklist) > 1:
if stacklist[-1] == stacklist[-2]:
stacklist.pop(-1)
stacklist.pop(-1)
answer += 2
break
return answer
다른 방법 2
def solution(board, moves):
basket = [] # 인형들을 담아줄 바구니~
answer = 0 # 팡 터진 인형들 계산
for move in moves: # 사용자의 움직임 하나씩 출력
for column in board: # columns 출력
# move는 1부터 시작하기 때문에 index로 사용하기 위해선 -1씩 해줘야 함
if column[move-1] != 0: # 만약 column의 move가 0이 아니라면 (인형이 있다는 말)
basket.append(column[move-1]) #해당 값을 인형 바구니에 담기
if len(basket) > 1: # 바구니에 인형이 2개 이상 들어가는데
if basket[-2] == basket[-1]: # 인형이 두개가 겹친다면
del basket[-2] # 터뜨린다
del basket[-1] # 터뜨린다
answer += 2 # 터뜨린 인형 갯수 추가
column[move-1] = 0 # 뽑은 인형은 0 처리
break
return answer
'Engineering WIKI > Programmers' 카테고리의 다른 글
[프로그래머스] 소수 만들기 (0) | 2022.04.01 |
---|---|
[프로그래머스] 내적 (0) | 2022.04.01 |
[프로그래머스] 음양 더하기 (0) | 2022.04.01 |
[프로그래머스] 없는 숫자 더하기 (0) | 2022.04.01 |
[프로그래머스] 키패드 누르기 (0) | 2022.04.01 |
[프로그래머스] 숫자 문자열과 영단어 (0) | 2022.04.01 |
[프로그래머스] 로또의 최고순위와 최저순위 (0) | 2022.04.01 |
[프로그래머스] 신고 결과 받기 (0) | 2022.04.01 |