일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 큐
- Greedy
- sort
- django
- 코딩테스트
- 알고리즘
- DFS
- Queue
- 완전탐색
- binary search
- DVWA
- DP
- graph
- 탐욕법
- 동적계획법
- Code Refactoring
- 카카오 기출
- 그래프
- heap
- 백준
- 정렬
- programmers
- 힙
- 문자열
- Brute Force
- string
- 프로그래머스
- BFS
- Algorithm
- Dynamic Programming
Archives
- Today
- Total
생각과 고민이 담긴 코드
프로그래머스 - 크레인 인형뽑기 게임 (2019 카카오 개발자 겨울 인턴십) / Level 1 본문
문제 : https://programmers.co.kr/learn/courses/30/lessons/64061
코딩테스트 연습 - 크레인 인형뽑기 게임
[[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
programmers.co.kr
풀이
def solution(board, moves):
answer = 0
stack = []
n = len(board)
for move in moves:
for i in range(n):
item = board[i][move-1] # 현재 집게가 가리키는 item.
if item != 0: # 집게가 인형에 도달했을 경우.
board[i][move-1] = 0 # 인형을 뽑아주고
if stack: # 바구니에 이전에 담긴 인형이 있으면
ex_item = stack.pop()
if item == ex_item: # 같은 종류 인형인지 비교.
answer += 2
else: # 다르면 둘 다 순서대로 다시 넣어줌.
stack.extend([ex_item, item])
else:
stack.append(item)
break
return answer
문제 설명이 길고 복잡해 보이지만 실상을 들여다보면 어렵지 않은 문제였다.
문제에서 설명하는 게임 로직을 그대로 구현만 하면 된다.
유의할 점은 하나의 시도에서 인형을 뽑았으면 break문을 통해 다음 시도로 넘어가야 한다는 것이다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 순위 검색 (2021 KAKAO Blind Recruitment) / Level 2 (2) | 2022.02.02 |
---|---|
프로그래머스 - 튜플 (2019 카카오 개발자 겨울 인턴십) / Level 2 (0) | 2022.01.22 |
프로그래머스 - 수식 최대화 (2020 카카오 인턴십) / Level 2 (0) | 2022.01.13 |
프로그래머스 - 키패드 누르기 ( 2020 카카오 인턴십) / Level 1 (0) | 2022.01.03 |
프로그래머스 - 거리두기 확인하기 (2021 카카오 채용연계 인턴십) / Level 2 (0) | 2022.01.03 |