Coding/프로그래머스
[2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임 with Python(★)
sinabro_dy
2022. 7. 18. 23:25
문제
내가 작성한 코드(못 품)
def solution(board, moves):
answer = [] # 인형을 집어넣을 바구니를 의미하는 변수
cnt = set() # 바구니에서 사라진 인형 수를 구할 변수
for i in moves: # moves 배열을 반복문으로 출력
for j in board: # board 2차 행렬을 하나씩 출력
if j[i-1] == 0: # i는 1부터 시작하므로 1을 빼주고, moves에 추출된 값이 0이면 통과
continue
else:
answer.append(j[i-1]) # 0이 아닌 값을 answer(바구니)에 담기
j[i-1] = 0 # 그리고 그 값을 0으로 바꿈
if len(answer) == 1: # answer 변수의 길이가 1이면 통과
continue
else:
if answer[-2] == answer[-1]: # 연속으로 같은 값이면 pop() 함수를 사용하여 제거
v = answer.pop()
answer.pop()
cnt.add(v) # cnt 변수에 사라진 인형의 수를 추가함
break
return len(cnt)
> 지문 코드 테스트에서는 통과했지만... 제출 후 실행 결과는 전체 다 틀림....
> 무엇이 문제인지 모르겠다... ㅜㅜ
참고한 코드
def solution(board, moves):
stacklist = []
answer = 0
for move in moves:
for i in range(len(board)):
if board[i][move-1] != 0:
stacklist.append(board[i][move-1])
board[i][move-1] = 0
if len(stacklist) > 1:
if stacklist[-1] == stacklist[-2]:
stacklist.pop(-1)
stacklist.pop(-1)
answer += 2
break
return answer
> 내가 참고한 블로그
https://jokerldg.github.io/algorithm/2021/03/28/crane-doll.html
프로그래머스 크레인 인형뽑기 게임 (python 파이썬) - Tech
[[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] 4
jokerldg.github.io
> 전체적인 풀이 과정은 나와 같다고 할 수 있다. 하지만, 디테일한 면에서 차이가 크다는 것을 알 수 있었다!!
> 내 코드는 굉장히 깔끔하지 않아서, 나 조차도 어디서 break를 걸어줘야 되는지 헷갈린다... 코드 정리를 깔끔하게 해보자!!
> break 의 위치에 따라서 결과가 달라지므로, break를 사용할 때 어떤 위치에서 적용해야 할지 생각하자!!