보드 정렬하기, 0은 아예 넣지 않고 시계방향으로 90도 돌려버린 리스트로 바꾼 후,
result가 비어있거나, 이번에 뽑은 값과 전에 뽑은 값이 다르면, 그냥 크레인으로 뽑아서 result에 넣기
리스트가 비어있지 않고, 이전에 뽑은값 == 전에 뽑은 값이면,
result에 넣지 않고, result에서 pop 하고, 카운트를 2개 올림
def solution(board, moves):
new_board = []
for i in range(len(board[0])):
arr = [board[j][i] for j in range(len(board[0])) if board[j][i]]
arr.reverse()
new_board.append(arr)
result = []
answer = 0
for i in moves:
if new_board[i-1]:
if not result or new_board[i-1][-1] != result[-1]:
result.append(new_board[i-1].pop())
else:
new_board[i-1].pop()
result.pop()
answer += 2
return answer
보드를 정렬하지 않고, 주어진 보드에서 바로 시작.
def solution(board, moves):
answer = 0
basket = [0]
for j in moves:
for i in board:
if i[j-1] != 0:
if i[j-1] == basket[-1]:
answer += 2
basket.pop()
else:
basket.append(i[j-1])
i[j-1] = 0
break
else:
pass
return answer
결과값 리스트에 넣은 후에, 리스트 길이가 1 초과이고, -1번째 인덱스와 -2번째 인덱스가 같으면,
pop() 두번 해서 없애기.
def solution(board, moves):
basket = []
answer = 0
for i in moves:
for j in range(len(board)):
if board[j][i-1] != 0:
basket.append(board[j][i-1])
board[j][i-1] = 0
if len(basket) > 1:
if basket[-1] == basket[-2]:
basket.pop(-1)
basket.pop(-1)
answer += 2
break
return answer
'코딩 테스트 연습' 카테고리의 다른 글
[알고리즘] 프로그래머스 - 삼총사 (0) | 2023.05.02 |
---|---|
[알고리즘] 프로그래머스 - 콜라 문제 (0) | 2023.05.02 |
[알고리즘] 프로그래머스 - 문자열 돌리기 (0) | 2023.05.02 |
[알고리즘] 프로그래머스 - 배열 조각하기 (0) | 2023.05.02 |
[알고리즘] 프로그래머스 - 옹알이(1) (0) | 2023.05.02 |
댓글