크레인 인형뽑기 게임 _ Lv.1
2022. 9. 9. 07:27ㆍ2022/Programmers_Kakao 기출
매번 내가 푼 문제와 비교해보는데...
나보다 간결하고 쉽게 푼 사람들 보면 "통과"에 의의를 뒀던 과거의 내가 부끄러워지고,
효율성과 적절한 알고리즘을 고려하여 문제를 푸는 것이 중요하다는 생각이 든다.
from collections import deque
def solution(board, moves):
answer = 0
pickQueue = [deque([]) for _ in range(len(board))]
for i in range(len(board)):
for j in range(len(board)):
if board[i][j] != 0:
pickQueue[j].appendleft(board[i][j])
resultQueue = deque([])
lastDoll = 0
for m in moves:
if len(pickQueue[m-1])==0:
continue
else:
newDoll = pickQueue[m - 1].pop()
if newDoll == lastDoll:
resultQueue.pop()
answer += 2
if len(resultQueue)>0:
lastDoll = resultQueue[-1]
else:
lastDoll = 0
else:
resultQueue.append(newDoll)
lastDoll = newDoll
return answer
위의 문제는 내가 풀이한 문제이다. 그리고 아래는 Stack을 이용한 풀이를 참고하여 다시 짜본 코드이다.
def solution(board, moves):
answer = 0
resultStack = []
for i in moves:
for j in range(len(board)):
if board[j][i-1] != 0:
resultStack.append(board[j][i - 1])
board[j][i - 1] = 0
if len(resultStack)>1:
if resultStack[-1] == resultStack[-2]:
resultStack.pop(); resultStack.pop()
answer += 2
break
return answer
'2022 > Programmers_Kakao 기출' 카테고리의 다른 글
두 큐 합 같게 만들기 _ Lv.2* (0) | 2022.09.10 |
---|---|
성격 유형 검사하기 _ Lv.1 (0) | 2022.09.06 |
키패드 누르기 _ Lv.1 (0) | 2022.09.06 |
숫자 문자열과 영단어 _ Lv.1 (0) | 2022.09.05 |
신규 아이디 추천 _ Lv.1 (0) | 2022.09.04 |