Skip to content

Commit 4218b03

Browse files
committed
[BOJ]#14226. 이모티콘/골드4/1h
https://www.acmicpc.net/problem/14226
1 parent c73e05f commit 4218b03

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

Hongjoo/백준/이모티콘.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
"""
2+
https://www.acmicpc.net/problem/14226
3+
# 이모티콘 / 골드 4
4+
# goal ) 화면에 S개 이모티콘 만드는데 드는 최소시간 구하기
5+
- 3가지 작업(1sec)로 화면 1개 -> S 개
6+
(1) 화면 속 모든 이모티콘 -> 클립보드에 "복사" <덮어쓰기 - ctrl+c>
7+
(2) 클립보드 속 모든 이모티콘 -> 화면에 "붙여넣기" <추가- ctrl+v>
8+
- 클립보드가 반드시 비어있지 않아야 붙여 넣기 가능
9+
- 클립 보드 속 이모티콘은 일부만 삭제 , 복사 불가
10+
- 붙여넣기 시, 클립보드에 있는 이모티콘 개수가 화면에 추가됨
11+
(3) 화면 속 이모티콘 1개 삭제 <삭제 - delete>
12+
# FLOW : BFS
13+
i.
14+
field = [screen : 화면 속 이모티콘 개수 , Backup: 클립보드 속 이모티콘 개수]
15+
ii. 3가지 작업
16+
[copy]
17+
- Bacup[i] = Screen[i-1] 개수
18+
[put]
19+
if backup[i-1] !=0
20+
- screen[i] = backup[i-1] + screen[i-1]
21+
[delete]
22+
- screen[i] = screen[i-1]
23+
"""
24+
import sys
25+
from collections import deque
26+
input = sys.stdin.readline
27+
28+
S = int(input())
29+
visited = [[False]*1002 for _ in range(1002)]
30+
visited[1][0] = True# visited [screen 개수][클립보드 개수] 조합 시 방문 여부 T/F
31+
32+
q = deque([[1,0,0]]) # screen 개수
33+
# 3가지 각 종류의 작업 이후 화면 속 & 클립보드 속 이모티콘 개수
34+
def function(num , screen , backup ):
35+
if num == 0 : # copy
36+
return screen , screen
37+
elif num == 1 : # put
38+
return screen + backup , backup
39+
elif num == 2: # delete
40+
return screen -1 , backup
41+
# 2. BFS 작업
42+
while q:
43+
cs , cb , ct =q.popleft()
44+
# 목표 달성시-> 끝내기
45+
if cs == S :
46+
break
47+
if cb == 0 :
48+
next_f = [0,2]
49+
else :
50+
next_f = [0,1,2]
51+
52+
for d in next_f :
53+
ns , nb = function(d , cs , cb )
54+
nt = ct+1
55+
#BFS 화면 적합성
56+
if 1<= ns <=1001 and not visited[ns][nb] :
57+
q.append([ns, nb , nt])
58+
visited[ns][nb] = True
59+
60+
print(ct)

0 commit comments

Comments
 (0)