알파벳과 쿼리 (Easy)

시간 제한1초메모리 제한1024 MB

요약
문자열이 주어질 때, 구간에서 같은 알파벳이 이어지는 최대 묶음의 개수를 세거나 구간의 모든 알파벳을 다음 알파벳으로 바꾸는 쿼리에 답한다.
난이도

보통10점 중 4점

유형
문자열, 시뮬레이션, 구현, 배열
정답자
아직 제출이 없습니다

문제

Hard 버전과 NN, QQ의 제한을 제외한 문제 차이는 없다.

다음 조건들을 만족하는 부분 문자열을 알파벳 묶음이라고 하자.

  • 하나의 동일한 알파벳으로만 문자열이 이루어져 있어야 한다.
  • 전체 문자열에서 해당 부분 문자열을 포함한 길이가 더 긴 부분 문자열로 알파벳 묶음을 만들 수 있으면 그 부분 문자열은 알파벳 묶음이 아니다.

예를 들어 "AAABBAAC"와 같은 문자열이 있을 때, 알파벳 묶음은 "AAA", "BB", "AA", "C"로 4개다. 위의 문자열에서 "B", "AC"는 조건을 만족하지 않으므로 알파벳 묶음이 아니다.

영어 알파벳 대문자로만 이루어진 길이가 NN인 문자열 S=S_1S_2…S_NS = S\_1 S\_2 \dots S\_N가 주어질 때, 다음 쿼리를 수행하는 프로그램을 작성하자.

  • 1 l r1 \ l \ r : 부분 문자열 S_lS_l+1…S_rS\_l S\_{l+1} \dots S\_r에서 알파벳 묶음의 개수를 출력한다.
  • 2 l r2 \ l \ r : 부분 문자열 S_lS_l+1…S_rS\_l S\_{l+1} \dots S\_r의 모든 알파벳을 각각 알파벳 순서로 다음인 알파벳으로 변경한다. 단, Z인 경우 A로 변경한다.

S_lS_l+1…S_rS\_l S\_{l+1} \dots S\_r는 SS의 ll번째 알파벳부터 rr번째 알파벳까지를 모두 순서대로 포함하는 부분 문자열이다.

입력

첫 번째 줄에 문자열의 길이 NN과 쿼리의 개수 QQ가 공백으로 구분되어 주어진다. (3≤N,Q≤200)(3 \leq N, Q \leq 200)

두 번째 줄에 영어 알파벳 대문자로만 이루어진 길이가 NN인 문자열 SS가 주어진다.

세 번째 줄부터 QQ개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다. (1≤l≤r≤N)(1 \leq l \leq r \leq N)

11번 쿼리는 한 번 이상 주어진다.

출력

11번 쿼리에 대한 결괏값을 한 줄에 하나씩 입력으로 주어진 순서대로 출력한다.

예제1

  1. 예제 1

    입력
    8 5
    AAABBAAC
    1 3 8
    2 2 7
    1 1 8
    2 6 7
    1 1 8
    
    예상 출력
    4
    5
    3