크레인 인형뽑기 게임(LEVEL 1)
2019 카카오 개발자 겨울 인턴십
내가 제출한 답안
def solution(board, moves):
arr = []
count = 0
for i in range(len(moves)):
n = moves[i]
for j in range(len(board[0])):
if board[j][n - 1] > 0:
arr.append(board[j][n - 1])
board[j][n - 1] = 0
break
# print(arr)
if len(arr) > 1:
if arr[len(arr) - 2] == arr[len(arr) - 1]:
count += 1
arr.pop()
arr.pop()
return count * 2
나의 풀이
- 문제의 설명 그대로 코드를 작성하였다.
- 변수 i를 활용하여 'moves'의 갯수만큼 for 반복문을 작동시켜 'arr'이라는 빈 공간에 인형들을 옮기려고 한다.
- 변수 j를 활용하여 for 반복문을 한 번 더 작동시켜 각 층마다 인형의 유무를 확인한다.
- 크레인 작동시킨 위치에 인형이 존재한다면(board[j][n-1] > 0), 리스트 arr에 해당 번호의 인형을 옮기고(append), 해당 위치를 0으로 바꿔준다.
- (옮기는 작업을 마치고 입력값 예시를 활용하여 arr을 출력하게 되면 [4, 3, 1, 1, 3, 2, 4]가 출력되는 것을 확인할 수 있다.)
- 각 층마다 확인이 끝나면 arr의 상태를 확인한다.
- arr 내부에 두 개 이상의 인형이 존재한다면(len(arr) > 1), 마지막 인형 2개를 확인한다.
- 그 두 인형이 같은 종류라면(true) 인형을 터뜨리고(pop), 터트린 횟수(count)를 기록한다.
- 터트릴 때, 인형 2개가 사라지므로 터트린 횟수 * 2를 반환시켜준다.
파이썬 관련 학습내용
- append, pop 활용
- arr에 인형을 담아내는 형태는 스택(LIFO)과 비슷하다.
- arr.append(i)를 사용하여 리스트 arr의 마지막 위치에 i 값을 추가시켜준다.
- arr.pop()을 사용하게 되면 arr의 마지막 항목을 삭제한다.(삭제된 값은 돌려주는데 이 문제에서는 따로 활용하지 않음)
'Algorithm' 카테고리의 다른 글
[프로그래머스] 비밀지도 with Javascript (0) | 2021.12.16 |
---|---|
[프로그래머스] 상호평가 with JavaScript (0) | 2021.09.18 |
[프로그래머스] 부족한 금액 계산하기 with JavaScript (0) | 2021.09.16 |
[프로그래머스] 다트 게임 with Python (0) | 2021.07.17 |
[프로그래머스] 비밀지도 with Python (0) | 2021.07.09 |