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 | 31 |
Tags
- 그리디
- 코딩테스트
- BFS
- 블챌
- Express
- 스택
- DFS
- 완전탐색
- CSS
- 알고리즘
- 자료구조
- 문자열
- 재귀
- react-query
- django
- react
- 파이썬
- 구현
- DFS기초
- 코테
- 그리디알고리즘
- 백준
- 백준알고리즘
- 코딩테스트실력진단
- 코드트리
- DFS활용
- JS
- 스택자료구조
- socket.io
- DP
Archives
- Today
- Total
꾸준하게 거북이처럼
백준 14266 파이썬 본문
14226번: 이모티콘
영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만
www.acmicpc.net
풀이
1. 문제에서 필요한 데이터: 현재 화면에 있는 이모티콘 개수, 클립보드에 있는 이모티콘 개수, 현재까지 걸린 시간 3가지가 필요
2. 3가지를 표현할 방법: 2차원 배열 => { d[스크린에 있는 이모티콘개수][클리보드에 있는 이모티콘 개수] } => 걸린 시간
3. 주의사항: 인덱스로 개수를 표현하고 있기 때문에 배열의 인덱스가 제한 범위를 벗어나지 않도록 해야한다. ex) 1000까지 이므로 1000을 넘어가지 않도록, 삭제할 시 음수 인덱스가 나오지 않도록. + 처음 2차원 배열을 할당할 때 n + 1로 메모리할당.
처음에는 메모리 초과가 나왔다. 그래서 최소한의 메모리로 3개의 데이터를 표현할 방법이 없을까.. 하다 2차원 배열을 이용할 수 있었다.
런타임 에러로, index 에러가 나왔는데, 그 이유는 이모티콘 제거시, 음수의 인덱스가 나올 수 있고, 이를 제외하고 1000을 넘는 인덱스도 나올 수 있기 때문에 제한이 필요했다.
코드
from collections import deque
n = int(input())
d = [[-1] * (n+1) for _ in range(n+1)] # 인덱스 자체를 개수로 표현하므로 n + 1
def sol():
q = deque([(1,0)])
d[1][0] = 0
while q:
s, c = q.popleft()
if s == n:
print(d[s][c])
exit()
if s <= n and d[s][s] == -1: # 1000개 이하의 인덱스여야함.
d[s][s] = d[s][c] + 1
q.append((s, s))
if s+c <= n and d[s+c][c] == -1: # 1000개 이하의 인덱스여야함.
d[s+c][c] = d[s][c] + 1
q.append((s + c, c))
if s - 1 >=0 and d[s-1][c] == -1: # 음수가 아닌 인덱스여야함.
d[s-1][c] = d[s][c] + 1
q.append((s-1, c))
sol()
# 리스트의 인덱스 값을 가지고 연산을 한다면, 그 값이 제한 범위를 벗어나는지도 확인해야하고, 그 값 자체가
# 개수를 나타낸다면, 0부터가 인덱스이므로 n+1 로 할당하는 것을 잊지말자.
참고
[백준] boj-14226 이모티콘 파이썬
[ 문제 ] https://www.acmicpc.net/problem/14226 [ 알고리즘 유형 ] 다이나믹 프로그래밍 그래프 이론 그래프 탐색 너비 우선 탐색 [ 정답 코드 ] [ 풀이 방법 ] 걸리는 시간의 최솟값을 구한다. 즉, 최단시간
velog.io
'Algorithm 문제 & 공부 > BFS' 카테고리의 다른 글
이코테 미로탈출 (0) | 2022.12.07 |
---|---|
백준 1261번: 알고스팟 파이썬 (0) | 2022.11.08 |
백준 13913번 파이썬 - 숨바꼭질4 (0) | 2022.10.29 |
BFS - 가중치와 최단거리 (0) | 2022.10.27 |
백준 7576번 토마토 (0) | 2022.10.23 |
Comments