Skip to content

Conversation

@0224LJH
Copy link
Contributor

@0224LJH 0224LJH commented Aug 23, 2025

🧷 문제 링크

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

🧭 풀이 시간

30분

👀 체감 난이도

✏️ 문제 설명

알파벳 소문자로 이루어진 문자열 s가 주어진다. 알파벳 중에서 일부는 좋고, 나머지는 나쁘다.

문자열 s = s1s2...s|s|(|s|는 문자열 s의 길이)의 부분 문자열 s[l...r] (1 ≤ l ≤ r ≤ |s|)는 slsl+1...sr 이다.

만약, s[l...r]을 이루고 있는 알파벳 sl, sl+1, ..., sr 중에서 나쁜 알파벳의 개수가 최대 k개라면, 그 부분 문자열을 좋다고 한다.

s의 서로 다른 좋은 부분 문자열의 개수를 찾는 프로그램을 작성하시오. s[x...y] ≠ s[p...q]인 경우에 두 부분 문자열 s[x...y]와 s[p...q]를 서로 다르다고 한다.

🔍 풀이 방법

전형적인 트라이 문제이다. 문자열의 시작위치를 다르게 해 각각의 경우에 대해서 하나의 단어로 간주하고 대입 후, dfs를 통해 계산하면 간단히 풀 수 있다.

⏳ 회고

@0224LJH 0224LJH added the success 👍 해설을 보지 않고 풀었을 때 label Aug 23, 2025
@ShinHeeEul ShinHeeEul merged commit 0516ff6 into main Aug 23, 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