File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed
Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change 1+ import sys
2+ from collections import deque
3+ input = sys .stdin .readline
4+
5+ # 1. 입력 및 초기화
6+ S = int (input ())
7+ MAX = 1001
8+
9+ # visited[screen][clipboard] = 해당 상태까지 걸린 시간
10+ visited = [[- 1 ] * MAX for _ in range (MAX )]
11+ visited [1 ][0 ] = 0
12+
13+ queue = deque ([(1 , 0 )]) # 화면 임티 개수, 클립보드 임티 개수
14+
15+ # 2. BFS 탐색
16+ while queue :
17+ screen , clip = queue .popleft ()
18+
19+ # 3. 목표 달성 시 종료
20+ if screen == S :
21+ print (visited [screen ][clip ])
22+ break
23+
24+ for i in range (3 ):
25+ if i == 0 : # 복사 (화면 → 클립보드)
26+ new_screen , new_clipboard = screen , screen
27+ elif i == 1 : # 붙여넣기 (클립보드 → 화면)
28+ new_screen , new_clipboard = screen + clip , clip
29+ else : # 삭제 (화면 - 1)
30+ new_screen , new_clipboard = screen - 1 , clip
31+
32+ if new_screen >= MAX or new_screen < 0 \
33+ or new_clipboard >= MAX or new_clipboard < 0 \
34+ or visited [new_screen ][new_clipboard ] != - 1 :
35+ continue
36+
37+ visited [new_screen ][new_clipboard ] = visited [screen ][clip ] + 1
38+ queue .append ((new_screen , new_clipboard ))
You can’t perform that action at this time.
0 commit comments