본문 바로가기
Python/PS in Python

크레인 인형뽑기 게임 : 코딩테스트 연습 / Python / Programmers / Level1

by Air’s Big Data 2020. 10. 21.

크레인 인형뽑기 게임

위치에서 인형을 집어 바구니에 쌓으면 같은 모양 인형  두 개 가 없어짐

 

 

문제는 제목 링크에서 확인이 가능하며, 입출력의 예시는 아래와 같다.

 

#Input
board = [[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]]
moves = [1,5,3,5,1,2,1,4]	

#Output (사라진 인형 개수)
4 

#7개 뽑았으니까 5개 찰 때 2개 다시 5개 찰 때 2개사 사라져서 4개가 사라짐

 

 

Solution: 

def solution(boards, moves):
#1번일경우 배열에서 0번에 접근하므로 -1씩 한다
    moves = list(map(lambda mv : mv -1, moves))
    stack = [0] #0을 안 넣을 경우 IndexError
    cnt = 0
    
    for i in moves: #moves를 index로 사용
        for board in boards :
            if board[i] != 0 :  #비어있지 않으면 
                stack.append(board[i])  #stack에 board의 i번째 원소를 추가하고
                board[i] = 0  #0으로 바꿔준다
                if stack[-1] == stack[-2]: #stack의 마지막 원소와 마지막에서 두번째 원소가 같으면 
                    stack.pop() 
                    stack.pop() #원소 2개를 pop한 뒤
                    cnt += 2    #2씩 증가
                break #다음 배열로 가진 않도록 break
    return cnt

 

관련 개념: 

 

람다(lambda)

lambda 인자 : 표현식

#람다 활용 예시
(lambda x,y: x + y)(10, 20)
#Out: 30


a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(map(lambda x: str(x) if x % 3 == 0 else x, a))
#Out: [1, 2, '3', 4, 5, '6', 7, 8, '9', 10]

 

 

댓글