sm 기술 블로그
크레인 인형뽑기 게임(2019 카카오 개발자 겨울 인턴십) - 파이썬 본문
from collections import deque
queue = deque()
def solution(board, moves):
answer = 0
for i in moves:
for j in range(len(board[i-1])):
if(board[j][i-1] != 0):
tmp = board[j][i-1]
board[j][i-1] = 0
try:
if queue[-1] == tmp :
queue.pop()
answer+=2
else:
queue.append(tmp)
except:
queue.append(tmp)
break
return answer
문제요약
인형을 집어 바구니에 쌓아서 넣는다. -> 바구니에 중복으로 인형이 2개 있으면 2개를 없애고 없앤 수를 answer로 한다.
설명
이 문제는 설명이 정말정말정말정말 불친절하다.
문제 풀다가 홧병나서 죽을 뻔 했다.
자.. 일단 입출력이
이거다.
그러면 보통
이 두개 중 하나라 생각하지 않을까?
1번을 해보았을 때 테스트 케이스가 통과되지 않는다.
2번을 해보았을 때 아주 잘 통과된다
ok 2번이구나 하고 문제 풀면? 당신은 틀렸다....
그들은
이걸 말한 것이다...
정말 이거에서 어이가 없었다;;;;
하나 더 덧붙이면 0은 그냥 빈 상태이다.
따라서 0 자체는 의미가 없다.
지금 보니까 제가 이해를 못한거 같다...... 그냥 그런거 같다.
어쨋든 해설을 진행 하겠다.
문제는 deque를 사용하였다.(stack을 사용해도 무방하다.) => 습관이 되어 큐를 사용한 것이다.
if(board[j][i-1] != 0):
tmp = board[j][i-1]
board[j][i-1] = 0
이 조건문의 경우 쉽게 생각을 해냈을 것이다.
try:
if queue[-1] == tmp :
queue.pop()
answer+=2
else:
queue.append(tmp)
except:
queue.append(tmp)
이게 문제인데
큐에 맨 위의 값과 현재 인형을 뽑아 큐에 옮기려고 하는 값이 서로 같다면 큐의 맨 위 값을 없애고 2를 더해준다.
예외처리를 쓴 이유는 만약 큐가 비어있을 겨우에 queue[-1]이라는 것은 진행할 수 없기 때문이다.
'문제 > 프로그래머스_파이썬' 카테고리의 다른 글
신고 결과 받기(2022 KAKAO BLIND RECRUITMENT) - 파이썬 (0) | 2022.10.08 |
---|---|
성격 유형 검사하기(2022 KAKAO TECH INTERNSHIP) - 파이썬 (1) | 2022.10.07 |
신규 아이디 추천(2021 KAKAO BLIND RECRUITMENT) - 파이썬 (0) | 2022.10.06 |
키패드 누르기(2020 카카오 인턴십) - 파이썬 (0) | 2022.10.05 |
숫자 문자열과 영단어 (카카오 채용연계형 인턴십) - 파이썬 (0) | 2022.10.04 |
Comments