문제
인형의 위치가 놓인 배열 board와 인형뽑기 기계가 내려갈 위치가 적힌 moves 배열이 주어진다.
- 0이 아닌 위치를 집으면 이 숫자는 bucket에 담긴다.
- 한번 집은 자리는 0이 된다.
- bucket의 숫자는 바닥부터 저장되며 같은 수가 만나게 되면 사라진다.
사라진 인형의 개수를 return 하시오.
내 코드
def solution(board, moves):
bucket= []
board_len = len(board)
i = 0
cnt = 0
for y in moves:
for x in range(board_len):
if board[x][y-1] != 0:
bucket.append(board[x][y-1])
board[x][y-1] = 0
i += 1
break
if i > 1 and bucket[i-1] == bucket[i-2]:
del bucket[i-1]
del bucket[i-2]
i -= 2
cnt += 2
return cnt
문제 풀이
- 0이 아닌 원소 선택 시 bucket에 넣는다.
- bucket에 넣고 해당 자리를 0으로 바꾼다.(넣으면 break)
- bucket에 넣을 때의 인덱스와 -1 한 인덱스가 같으면 count 값을 2 증가시키고 -1 인덱스 자리를 remove한다.
고수 풀이
- 나는 배열에서 del로 값을 제거했는데 stack을 이용하여 pop을 하면 더 수월해보인다.
def solution(board, moves):
stacklist = []
answer = 0
for i in moves:
for j in range(len(board)):
if board[j][i-1] != 0:
stacklist.append(board[j][i-1])
board[j][i-1] = 0
if len(stacklist) > 1:
if stacklist[-1] == stacklist[-2]:
stacklist.pop(-1)
stacklist.pop(-1)
answer += 2
break
return answer
'Python > Programmers' 카테고리의 다른 글
Lv.1-키패드 누르기 (0) | 2021.07.08 |
---|---|
Lv.1-내적 구하기 (0) | 2021.07.07 |
Lv.1-모의고사 (0) | 2021.07.07 |
Lv.1-체육복 (0) | 2021.07.07 |
Lv.1-로또의 최고 순위와 최저 순위 (0) | 2021.07.07 |