티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/64061
1. 접근 방식
- board의 행과 열을 교환하여 전치행렬로 문제를 풀자.
크레인은 열을 기준으로 접근하여 인형을 뽑지만, 행과 열로 이루어진 리스트는 행을 우선해서 접근한다. 따라서 위 그림처럼 전치행렬로 board를 바꾼 후 뽑기를 처리해야겠다고 생각했다.
- moves를 순회하면서 바구니에 인형을 넣고, 곧 바로 터트려지는 인형이 있는지 확인하자.
바구니에 넣자마자 가장 마지막에 들어간 인형과 바로 이전에 들어간 인형, 즉 숫자가 똑같은지 확인하자. 만약 두 숫자가 동일하다면 바구니에서 가장 마지막 원소(-1번째)와 그 앞의 원소(-2번째)를 삭제한다.
2. 정답 코드
def transpose(data):
results = [[] for _ in range(len(data))]
for i in range(len(data)):
for j in range(len(data)):
if data[j][i]:
results[i].append(data[j][i])
return results
def solution(board, moves):
board = transpose(board)
ans = 0
stack = []
for move in moves:
if not board[move-1]: # 빈칸 처리
continue
stack.append(board[move-1].pop(0))
if len(stack) > 1 and stack[-1] == stack[-2]:
stack = stack[:-2]
ans += 2
return ans
728x90
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 성격 유형 검사하기 파이썬 정답 코드 (0) | 2023.06.13 |
---|---|
[프로그래머스] 신규 아이디 추천 파이썬 정답 코드 (0) | 2023.06.13 |
[프로그래머스] 문자열 나누기 파이썬 정답 코드 (0) | 2023.06.13 |
[프로그래머스: 코딩테스트 연습 힌트 모음집] 체육복 파이썬 정답 코드 (0) | 2022.11.16 |
[프로그래머스: 코딩테스트 연습 힌트 모음집] 문자열 다루기 기본 파이썬 정답 코드 (0) | 2022.11.14 |