🧠𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺/💙프로그래머스
[2019 카카오 개발자 겨울 인턴십 / Level1👶🏻] 크레인 인형뽑기 게임(python)
안오늘
2021. 6. 29. 21:07
1. 문제 설명
https://programmers.co.kr/learn/courses/30/lessons/64061
게임 화면의 격자의 상태가 담긴 2차원 배열 board와 인형을 집기 위해 크레인을 작동시킨 위치가 담긴 배열 moves가 매개변수로 주어질 때, 크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return 하도록 solution 함수를 완성해주세요.
2. 나의 풀이
def solution(board, moves):
answer = 0
stack = []
for move in moves:
for i in range(len(board)):
if board[i][move-1] != 0:
stack.append(board[i][move-1])
board[i][move-1] = 0
if len(stack) > 1:
if stack[-1] == stack[-2]:
stack.pop()
stack.pop()
answer += 2
break
print(stack)
return answer
1. moves(열 위치 나타냄)만큼 크레인을 작동시킨다.
2. 크레인을 작동시킬 때는 해당 move의 위치에 있는 값을 스택에 넣는다.
3. 스택에 바로 연이어서 같은 값이면 두 개를 stack에서 pop하고, answer 값을 2개 올린다.
3. 다른 사람의 풀이
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
정말 비슷하게 풀었다! 오오 뿌듯해~~~~~!!!!!!!
4. 깨달은점
아이패드에 코드가 돌아가는 것을 직접 그리면서 생각하니까 놓친 것도 찾고 좋았다!
stack 마지막과 그 전이 같으면 pop() 해주려고 했는데, 자꾸 list range에러가 났는데, len(stack)>1인 경우일 때를 안 적어서였다..
꼼꼼하게 처리해야함이 중요하다는 것을 다시 한번 배웠다!
다른 프로그래머스 문제들은 이중 for문 쓰면 효율성에서 에러나서 걱정했는데... 에러가 안나서 좋았당 ........!
다시 한 번 풀 때는 더 빠른 속도로 풀어야겠다!!!!!