Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Feb 20, 2025

🧷 문제 링크

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

🧭 풀이 시간

12분

👀 체감 난이도

✏️ 문제 설명

  • 어떤 원본 문자열 S가 주어졌을 때, 이 문자열의 부분을 복사하여 P라는 새로운 문자열을 만들려고 한다.
  • S의 연속된 부분문자열을 추출해서 P의 맨 뒤에 이어붙일 수 있다.
  • S와 목표 문자열 T가 주어지면, 해야하는 작업의 최소 횟수를 구해보자.

🔍 풀이 방법

[사용한 알고리즘]

  • DP

  • $DP[i] = $T의 i번째 문자까지 완성시켰을 때, 작업의 최소 횟수 라고 정의한다.
  • $T[i-j+1:i+1]$을 계속 보며, S에 속하는 한 j를 계속 늘려간다.
  • $DP[i] = \min(DP[i-j] + 1)$이 성립한다.

⏳ 회고

  • python에서의 in 연산이 매우 빠르다고 알고 있어서, python으로 해결했다.

@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Feb 20, 2025
@ShinHeeEul ShinHeeEul merged commit 6b473c8 into main Feb 20, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants