문제 요약
인형의 정보가 담긴 2차 배열을 받고 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]]
어떤 인덱스를 꺼낼지 적힌 매개변수를 받는데 [1,5,3,5,1,2,1,4]
꺼내서 담긴 바구니에 같은 인형의 정보가 두개가 쌓이면 두개를 터트려서 사라진다
다 꺼내고 남은 인형의 수를 return하도록 만들어보자
def solution(board, moves):
arr = []
answer = 0
leng = len(board)
for move in moves:
i = 0
while True:
if i == leng:
break
if board[i][move-1] != 0:
if len(arr) != 0:
if board[i][move-1] == arr[-1]:
arr.pop()
answer = answer+2
else:
arr.append(board[i][move-1])
else:
arr.append(board[i][move-1])
board[i][move-1] = 0
break
i = i+1
return answer
개발스토리
처음문제를 보고 이해를 잘못했다 0번째 배열이 1번줄이 되는 방식으로 오해했다. 그러다가 다시 문제를 보고 0번째가 가장위의 줄을 나타내고 1번째 배열이 위에서 2번째줄을 나타내는 로직이었다
로직을 생각할때 크래인의 동작을 잘생각해보았다
1. 인형을 뽑을때 크래인은 비어있는 인형이 나오지 않을때까지 쭉 내려간다
2. 인형을 발견하면 인형을 꺼낸다
3. 꺼내진 자리는 비어있음으로 표시를 바꾼다
이런 로직을 기반으로 코드를 구성했다 그래서 move의 수를 받아 i를 증가시키며 쭉 내려가면서 탐색하도록 했다
'코딩 알고리즘_코드정리 > PYTHON' 카테고리의 다른 글
소수만들기 (0) | 2022.05.09 |
---|---|
파이썬[코딩테스트] - 키패드 누르기 (0) | 2022.04.26 |
파이썬[코딩테스트] - 숫자 문자열과 영단어 (0) | 2022.04.20 |
파이썬[코딩테스트] - 신규아이디 추천 (0) | 2022.04.19 |
파이썬[코딩테스트] - 로또 최고순위 최저순위 (0) | 2022.04.19 |