No Rules Rules

인간-컴퓨터 상호작용 (feat. 백준, 16139번) 본문

생활/코테

인간-컴퓨터 상호작용 (feat. 백준, 16139번)

개발하는 완두콩 2022. 8. 7. 21:36
728x90
반응형

인간-컴퓨터 상호작용
https://www.acmicpc.net/problem/16139

 

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

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

www.acmicpc.net

 

반응형

 

// woohyeon.kim
// kim519620.tistory.com
#include <iostream>
#include <cstring>
#include <string.h>
using namespace std;
int dp[26][200002];
int main() {
	ios::sync_with_stdio(false), cin.tie(NULL);
	memset(dp, 0, sizeof(dp));
	string str;
	cin >> str;
	for (register int i = str.size() - 1; i >= 0; --i)
		for (register int c = 0; c < 26; ++c) {
			dp[c][i] = dp[c][i + 1];
			if (c == (str.at(i) - 'a'))
				++dp[c][i];
		}
	register int N, l, r;
	char tmp;
	cin >> N;
	for (register int n = 0; n < N; ++n) {
		cin >> tmp >> l >> r;
		cout << dp[tmp - 'a'][l] - dp[tmp - 'a'][r + 1] << "\n";
	}
	return 0;
}
// *&)*@*
  1. 문자와 l, r을 받을때마다 dp를 구하는 형태는 50점의 결과를 얻습니다.
  2. 따라서 모든 문자 (a부터 z까지 26개의 문자) 에 대한 dp를 문자열에 대해서 미리 만들고, 입력받은 l,r 에 대해서 구해주면 됩니다.
  3. 해당 문제는 아래 문제에서 단순히 문자열 26개로 확장 (1차원 배열에서 2차원 배열로) 된 개념이므로 미리 풀어보시길 권장합니다.
 

수열 (feat. 백준, 2559번)

수열 https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 1

kim519620.tistory.com

 

728x90
반응형

'생활 > 코테' 카테고리의 다른 글

동전 0 (feat. 백준, 11047번)  (0) 2022.08.08
나머지 합 (feat. 백준, 10986번)  (0) 2022.08.08
수열 (feat. 백준, 2559번)  (0) 2022.08.07
구간 합 구하기 4 (feat. 백준, 11659번)  (0) 2022.08.06
LCS (feat. 백준, 9251번)  (0) 2022.08.05
Comments