[Programmers] 크레인 인형뽑기 게임 (Python)

문제

https://programmers.co.kr/learn/courses/30/lessons/64061



접근 방식

  1. 주어진 2차원배열을 내가 이해하기 편한 형태로 변환
  2. move에 따라 바구니에 인형 append
  3. 같은 인형 2개가 겹쳐있으면 슬라이싱, cnt += 2



제출 코드

def solution(board, moves):
	basket = []
	cnt = 0
    	# 2차원 배열 변환 후 spaces에 저장
	spaces = list(map(list, zip(*board)))
	for space in spaces:
		space.reverse()
		while 0 in space:
			space.remove(0)
        # moves에 따라 인형 basket에 저장
	for move in moves:
    		# move 값에 해당하는 space에 인형이 없을 경우 예외처리
		if len(spaces[move - 1]) <= 0:
			continue
            	# basket에 인형 저장 후 space 인형 삭제
		basket.append(spaces[move - 1][-1])
		del spaces[move - 1][-1]
        	# basket에 인형 2개가 겹칠 경우
		if len(basket) >= 2 and basket[-2] == basket[-1]:
			basket = basket[:-2]
			cnt += 2
	return cnt



느낀점

이번 문제는 어렵다기 보단 해결하는 과정이 재미있는 문제였다. 물론 Level 1이라서 그렇겠지만...

좋은 웹페이지 즐겨찾기