본문 바로가기
프로그래머스/1단계

(Python/LV1)크레인 인형뽑기 게임

by windy7271 2022. 9. 15.
728x90
반응형

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/64061

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이:

def solution(board, moves):
    stack = []
    res = 0
    for i in moves:
        for j in range(len(board)):
			# 열 비교
            if board[j][i-1] != 0: # 뽑는수가 0 이 아닐때
                stack.append(board[j][i-1]) # 뽑은 숫자 스택에 넣고
                print(board)
                board[j][i-1] = 0  # 뽑은수 0 으로 바꿔줌

                if len(stack) > 1:
                    if stack[-1] == stack[-2]:
                        stack.pop(-1)
                        stack.pop(-1) # -2 면 안됨
                        res += 2
                    break
    return res



print(solution([[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] ))
# result = 4
# 맨 뒤가 맨 아래층

문제 이해하는데 좀 걸렸다.

 

처음에는 pop을 사용해서 숫자를 넣고 del로 없애려 했는데 원하는 값이 나는 pop이 안된다..

 

1 . 이동시키는 곳 찾아서 0이 아닌것 까지 찾아서 뽑음

2.  스택에 넣고 뽑은 숫자 0 으로 (del 로 삭제시키려다가 실패)

3.  넣으면서 stack 공간에 연속된 숫자인지 확인  > 맞으면 res += 2

반응형

댓글