-
[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문 쓰면 효율성에서 에러나서 걱정했는데... 에러가 안나서 좋았당 ........!
다시 한 번 풀 때는 더 빠른 속도로 풀어야겠다!!!!!
'🧠𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > 💙프로그래머스' 카테고리의 다른 글
[Summer/Winter Coding(~2018)/Level1👶🏻] 예산 (0) 2021.07.06 [찾아라 프로그래밍 마에스터 / Level1👶🏻] 폰켓몬 (0) 2021.06.30 [2021 KAKAO BLIND RECRUITMENT / Level1👶🏻] 신규 아이디 추천(python) (0) 2021.06.29 [코딩테스트 고득점 Kit / Level1 👶🏻 / 완전탐색] 모의고사(python) (0) 2021.06.27 [코딩테스트 고득점 Kit / Level2 🧒🏻 / 해시] 전화번호 목록(python) (0) 2021.06.27