[백준/BOJ][Python] ⭐14226번 이모티콘

Eunding·2024년 12월 16일
0

algorithm

목록 보기
91/107

14226번 이모티콘

https://www.acmicpc.net/problem/14226


아이디어

문제는 이해됐지만 아이디어를 떠올리는 게 어려웠다.

모든 경우의 수를 담기 위해 리스트는 1001*1001로 만들어주고
다음 세가지 동작을 반복한다.

  1. 복사: (screen, screen)
    → 화면의 이모티콘을 클립보드에 복사
  2. 붙여넣기: (screen + clip, clip)
    → 클립보드 내용을 화면에 붙여넣기
  3. 삭제: (screen - 1, clip)
    → 화면에서 이모티콘 하나 삭제

코드

import sys
from collections import deque
input = sys.stdin.readline

s = int(input())
graph = [[0]*1001 for _ in range(1001)]
queue = deque([(1, 0)]) # 초기값 (screen, clipboard)
answer = 0
while queue:
    screen, clip = queue.popleft()
    if screen == s:  # 화면에 있는 임티 개수랑 같아지면
        answer = graph[screen][clip]
        break
    arr = [[screen, screen], [screen+clip, clip], [screen-1, clip]] # 전체 복사, 붙여넣기, 하나 지우기
    for temp_screen, temp_clip in arr:
        if 0 <= temp_screen <= 1000 and 0 <= temp_clip <= 1000 and not graph[temp_screen][temp_clip]:
            graph[temp_screen][temp_clip] = graph[screen][clip]+1
            queue.append((temp_screen, temp_clip))
print(answer)

0개의 댓글