728x90
https://school.programmers.co.kr/learn/courses/30/lessons/64061
# 접근 방법
- 주어진 조건에 맞게 함수를 완성시켜야한다.
- 같은 인형이 바구니에 들어온다면 터트려 주고 총 터진 인형의 수를 반환 해주는 문제이다.
- 2중 리스트이므로 전치행렬을 이용하여 구할수도 있지만, 나는 반복문 내에서 행과 열의 인덱스 번호를 반대로 적어주며 풀었다.
- 스택을 이용하여 LIFO 구조로 제일 위에 인형만 비교해주고 출고 시켜주었다.
# 0은 빈칸
# 1~100은 각기 다른 인형
# 크레인은 멈춘 위치에서 가장 위에 있는 인형을 옮긴다.
# 같은 모양 인형이 쌓인다면 펑!
# 터진 인형의 개수 반환
def solution(board, moves):
answer = 0
# 결과 담아줄 리스트
result = []
for i in moves:
for j in range(len(board)):
# 2차원배열이라 아래로 쌓이지만 인형뽑기는 1열이 첫줄이다.
# (열 고정, 행 움직임)으로 구해준다.
# 또한 인형뽑기가 1부터 시작하므로 -1을 해주어야 인덱스번호와 동일하다.
if board[j][i-1] != 0:
# 인형이 들어있고 바구니 제일 위에 똑같은 인형이 들어있다면
# 빼주고 +2
if len(result) > 0 and result[-1] == board[j][i-1]:
result.pop()
answer += 2
# 아니라면 담아준다.
else:
result.append(board[j][i-1])
# 인형뺀거 기록
board[j][i - 1] = 0
break
return answer
728x90
'ALGORITHM > 자료구조' 카테고리의 다른 글
[백준 9012번] 파이썬 - 괄호 (1) | 2022.09.13 |
---|---|
[백준 1920] 파이썬 - 수 찾기 (0) | 2022.09.09 |
[백준 10845] 파이썬 - 큐 (0) | 2022.09.07 |
[백준 10828] 파이썬 - 스택 (0) | 2022.09.07 |
[SWEA 1860] 파이썬 - 진기의 최고급 붕어빵 (0) | 2022.08.28 |