Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Feb 21, 2025

🧷 문제 링크

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

🧭 풀이 시간

110분

👀 체감 난이도

✏️ 문제 설명

  • 아빠와 엄마와 내가 회전 테이블 앞에 앉아있다.
  • 회전 테이블에는 $N$개의 요리가 1번부터 차례대로 시계 방향으로 동일한 간격으로 놓여있다.
  • 처음에 아빠와 엄마, 나는 각각 $1$, $N/3 + 1$, $2N/3 + 1$번 요리 앞에 앉아있다.
  • 3명이 각각 먹으려는 요리의 순서가 주어지면, 요리를 다 먹는데 필요한 테이블 회전의 최소 횟수를 구해보자.

🔍 풀이 방법

[사용한 알고리즘]

  • DP
  • case work

  • DP[a][b][c][x][y] = 아빠가 a번째 요리까지 먹었고, 엄마가 b번째 요리까지 먹었고, 내가 c번째 요리까지 먹었고, 마지막으로 먹은 사람이 x이며, y의 방향으로 돌린 경우의 최소 회전 수 라고 정의한다.
  • x가 0이면 아빠, 1이면 엄마, 2이면 나, y가 0이면 시계방향, 1이면 반시계방향으로 돌린 경우다.
  • a, b, c만 완탐으로 돌려주고 DP[a][b][c][x][y]에서 x, y에 해당하는 부분은 하나하나 직접 작성했다.

⏳ 회고

  • 처음에 엄마와 나는 1번 요리 앞에 있지 않는 것을 나중에 깨달아서, 코드를 갈아엎었다.
  • DP식도 복잡한데 저걸 하나하나 직접 작성하니 머리가 깨질 뻔했다.

@oncsr oncsr added success 👍 해설을 보지 않고 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때 labels Feb 21, 2025
@ShinHeeEul ShinHeeEul merged commit 1fae944 into main Feb 21, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants