Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Level2_PStage
- 개인회고
- 부스트캠프_AITech3기
- 이코테
- ODQA
- 백준
- 백트랙킹
- 단계별문제풀이
- Level2
- 최단경로
- Level1
- mrc
- 알고리즘_스터디
- 부스트캠프_AITech_3기
- 주간회고
- 파이썬 3
- dfs
- 다이나믹프로그래밍
- 프로그래머스
- 그리디
- 구현
- 정렬
- 기술면접
- 알고리즘스터디
- U_stage
- 이진탐색
- 그래프이론
- dp
- python3
- 다시보기
Archives
- Today
- Total
국문과 유목민
1. 크레인 인형뽑기 게임 본문
0. 문제
링크: https://programmers.co.kr/learn/courses/30/lessons/64061
1. 알고리즘 계획
- 크레인에서 해당 값을 뽑아냄
- basket에 넣음
- basket내에서 for문으로 같은 값이 있는지 찾아내서 색출 후 count 추가
- 발견 시 다시 한번 두 값을 제거 후 for문 진행
2. 나의 코드
def solution(board, moves):
basket = []
for i in moves:
for j in range(len(board)):
if board[j][i-1] != 0:
basket.append(board[j][i-1])
board[j][i-1] = 0
break
return remove(basket, 0)
# 재귀함수 사용
def remove(basket, count):
for i, v in enumerate(basket):
if [v] == basket[i+1:i+2]:
del basket[i:i+2]
count += 2
count = remove(basket, count)
return count
- 재귀를 사용해서 풀었으나 썩 만족스럽지는 못한 코드
3. 다른 사람의 코드
def solution2(board, moves):
stack = []
answer = 0
for i in moves:
for j in range(len(board)):
if board[j][i-1] != 0:
stack.append(board[j][i-1])
board[j][i-1] = 0
if len(stack) > 1:
if stack[-1] == stack[-2]:
stack.pop(-1)
stack.pop(-1)
answer += 2
break
return answer
- stacklist를 사용해서 문제를 풀었음. 문제가 의도하는 바와 더 흡사한 느낌.
4. 정리 및 리뷰
- 처음에 내가 생각한 알고리즘과 재귀적 방법을 사용한 것에는 만족스러웠으나, 값을 한 번에 받아서 (basket) 사용한 것이었기에 원래 문제가 의도하는 바와는 약간 다른 점이 있다고 생각.
- 다른 사람의 풀이에서 stack을 사용한 풀이가 더 정확한 느낌이었다고 생각한다.
코드 만족도: ★★★☆☆
'알고리즘_코딩테스트 > 프로그래머스_Level1' 카테고리의 다른 글
6. 2016년 (0) | 2020.09.09 |
---|---|
5. K번째 수 (0) | 2020.09.09 |
4. 체육복 (0) | 2020.09.09 |
3. 모의고사 (0) | 2020.09.09 |
2. 완주하지 못한 선수 (0) | 2020.09.09 |
Comments