728x90
programmers - 크레인 인형뽑기 게임 |
https://school.programmers.co.kr/learn/courses/30/lessons/64061
문제의 자세한 설명은 위의 링크를 참조해주세요.
문제설명
그림처럼 2차원 배열로 인형뽑기판이 주어지면, 주어진 입력에 따라 인형을 뽑아서 오른쪽 바구니에 인형을 쌓게 됩니다.
이때 바구니에 같은 종류의 인형이 쌓이게 되면 터지게 되고, 터진 인형의 수를 구하면 되는 문제입니다.
문제풀이
오른쪽 바구니의 그림을 보고 스택 자료구조를 떠올릴 수 있습니다. 2차원 배열에서 moves 배열을 순회하면서 인형을 뽑아 스택에 넣고, 스택에 최상단 2개 인형 종류가 같으면 pop 을 통해 터트리면 됩니다.
사실 바구니를 보고 스택 을 떠올렸다면 더 고민할 여지가 없는 문제이므로 바로 코드를 작성해보겠습니다.
풀이코드
def solution(board, moves): stack = [] n = len(board) answer = 0 for move in moves: for i in range(0,n): if board[i][move-1] != 0: stack.append(board[i][move-1]) board[i][move-1] = 0 break while len(stack) >=2 and stack[len(stack)-1] == stack[len(stack)-2]: answer += 2 stack.pop() stack.pop() return answer |
728x90
'개인 공부 > 알고리즘 트레이닝' 카테고리의 다른 글
[python] programmers - 성격 유형 검사하기 (0) | 2022.09.06 |
---|---|
[python] programmers - 실패율 (1) | 2022.09.06 |
[python] programmers - 키패드 누르기 (0) | 2022.09.05 |
[python] programmers - 숫자 문자열과 영단어 (0) | 2022.09.05 |
[python] programmers - 신규 아이디 추천 (0) | 2022.09.05 |
댓글