📃 coding test/◽ 백준

(백준/c++) 16139 - 인간-컴퓨터 상호작용

핑크코냥 2022. 6. 27. 15:27
728x90

16139번: 인간-컴퓨터 상호작용 (acmicpc.net)

 

16139번: 인간-컴퓨터 상호작용

첫 줄에 문자열 $S$가 주어진다. 문자열의 길이는 $200,000$자 이하이며 알파벳 소문자로만 구성되었다. 두 번째 줄에는 질문의 수 $q$가 주어지며, 문제의 수는 $1\leq q\leq 200,000$을 만족한다. 세 번째

www.acmicpc.net

* 이 전의 누적합으로 사용했던 배열 SumArr[MAX]를 알바벳 개수 만큼 증가 시킴. -> SumArr[26][MAX]

#include<iostream>
#include<stdlib.h>
#include<string>
#include<memory.h>
using namespace std; 
#define MAX 200'001
int SumArr[26][MAX];
// 구간 합. 

int main(void)
{
    ios_base::sync_with_stdio(false); 
    cin.tie(0); 
    cout.tie(0);

    string str; 
    int cnt = 0; 

    memset(SumArr, 0, sizeof(SumArr));

    cin >> str;
    for(char& chr: str)
    {
        SumArr[chr-'a'][cnt]++; 
        for(int idx = 0; idx < 26; ++idx)
        {
            SumArr[idx][cnt] +=SumArr[idx][cnt-1];
        }
        cnt++;
    }   

    int que;
    cin >> que;

    for(int idx = 0; idx < que; ++idx)
    {
        char c; 
        int aBegin, aEnd ; 
        cin >> c >> aBegin >> aEnd;

         cout << SumArr[c - 'a'][aEnd] - SumArr[c - 'a'][aBegin-1] << "\n";
    }

    return 0;
}
728x90