-
[프로그래머스] 크레인 인형뽑기 게임Engineering WIKI/Programmers 2022. 4. 1. 02:30
코딩테스트 연습 - 크레인 인형뽑기 게임
[[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 [프로그래머스] 내적 (1) 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