반응형
크레인 인형뽑기 게임 문제는 2019 카카오 개발자 겨울 인턴십에 나온 문제다. 크레인에서 인형을 뽑아 새로운 칸에 집어놓고 순서대로 일치되면 제거하고, 제거된 인형의 갯수를 출력하는 문제다
def solution(board, moves):
nrow, ncol = len(board), len(board[0])
answer = []
counts = 0
for m in moves:
for i in range(nrow):
if board[i][m-1]:
answer.append(board[i][m-1])
board[i][m-1] = 0
break
if len(answer) > 1:
if answer[-2] == answer[-1]:
answer = answer[:-2]
counts += 2
return counts
코드로 보면 매우 간단하다. 먼저, moves에서 인덱스 값을 받아온다. 해당 인덱스는 열을 나타내는 인덱스이기 때문에 행 기준으로 서칭해서 0이 아닌 숫자가 나올 때 이를 출력하고, 뽑힌 숫자를 0으로 변환하면 된다. 그런 다음에 바로 break를 해주어서 불필요한 연산을 하지 않는다. 그리고, answer에는 뽑힌 값을 넣어준다. answer의 길이가 2 이상인 경우에는 이전에 입력된 값과 비교해서 값이 같다면 2를 더해준다. 그리고, 일치된 값은 슬라이싱을 통해 제거해도 되고, pop를 사용해도 된다.
'Python > Algorithm' 카테고리의 다른 글
[프로그래머스] 주차 요금 계산 - Python (0) | 2023.08.25 |
---|---|
[프로그래머스] 신고 결과 받기 - Python (4) | 2023.08.24 |
[프로그래머스] 키패드 누르기 - Python (0) | 2023.08.24 |
[프로그래머스] 성격 유형 검사 - Python (2) | 2023.08.24 |
[프로그래머스] 공원 산책 - Python (0) | 2023.08.24 |