백준 14226번

2025. 4. 11. 08:42·코딩 테스트

문제

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

알고리즘

1. bfs

풀이

1. BFS: 최소 시간를 구해야 하므로 BFS를 사용해야 합니다.

2. 상태 설계

“현재 화면에 있는 이모티콘 수”와 “클립보드에 복사된 이모티콘 수”의 조합

  • 화면 5개 / 클립보드 2개
  • 화면 5개 / 클립보드 3개

이 둘은 이후 가능한 행동이 완전히 달라지기 때문에 서로 다른 상태로 간주해야 합니다.

3. 방문처리 

visited[화면][클립보드]로 관리하면 모든 가능한 상태 조합을 추적할 수 있습니다.

코드

public class Main {

	public static void main(String[] args) {
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			int s = Integer.parseInt(br.readLine());
			boolean[][] visited = new boolean[2001][2001];
			Queue<int[]> q = new ArrayDeque<>();
			q.add(new int[]{1, 0, 0});
			visited[1][0] = true;

			while (!q.isEmpty()) {
				int[] cur = q.poll();
				int screen = cur[0], clip = cur[1], time = cur[2];

				if (screen == s) {
					System.out.println(time);
					return;
				}

				if (!visited[screen][screen]) {
					visited[screen][screen] = true;
					q.add(new int[]{screen, screen, time + 1});
				}

				if (clip > 0 && screen + clip < 2000 && !visited[screen + clip][clip]) {
					visited[screen + clip][clip] = true;
					q.add(new int[]{screen + clip, clip, time + 1});
				}

				if (screen > 1 && !visited[screen - 1][clip]) {
					visited[screen - 1][clip] = true;
					q.add(new int[]{screen - 1, clip, time + 1});
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

'코딩 테스트' 카테고리의 다른 글

백준 1976번  (0) 2025.04.18
백준 1937번  (0) 2025.04.08
백준 1520번  (0) 2025.03.24
백준 1068  (0) 2025.03.10
백준 2573번  (0) 2025.03.04
'코딩 테스트' 카테고리의 다른 글
  • 백준 1976번
  • 백준 1937번
  • 백준 1520번
  • 백준 1068
jamin
jamin
  • jamin
    jamin
    jamin
  • 전체
    오늘
    어제
    • 전체 (82)
      • 트러블슈팅 (31)
        • 회사 (25)
        • 개인 (6)
      • 개념 저장소 (19)
        • coroutine (10)
        • spring reactive (9)
        • network (0)
      • 코딩 테스트 (31)
  • 태그

    그리디
    그리디 알고리즘
    dfs
    coroutine
    sinks
    DP
    JPA
    정렬
    경로압축
    log
    백준 23758
    코테
    백준
    cluster mode
    BFS
    error alram
    spring boot
    reactive
    batch
    대용량 데이터
    수학
    누적합
    코딩테스트
    다익스트라
    Kotlin
    분리집합
    instancio
    mirroring mode
    spring reactive
    다이나믹 프로그래밍
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
jamin
백준 14226번
상단으로

티스토리툴바