[BOJ 백준] 31825번 : 알파벳과 쿼리 (Easy) (C++)
목차
- 01. 개요
- 02. 접근 방식
- 03. 정답 코드
01. 개요
출처
https://www.acmicpc.net/problem/31825
문제

입력

출력

예시

02. 접근 방식
과정
1. string으로 현재 문자열을 입력 받음
2. 쿼리 값이 1인 경우
index가 start -1부터 end-1까지 현재 문자와 이전 문자를 비교
달라질 때마다, 묶음의 개수를 1 증가
초기에는 char prev = ' '; 로 초기화하면, 처음 검사를 할 때, 서로 다른 문자로 인식해 묶음의 개수가 1로 시작
구한 묶음의 개수를 출력
3. 쿼리 값이 2인 경우
index가 start - 1부터 end -1까지 알파벳의 순서를 한 단계 미루기 → 아스키 코드가 1씩 차이나는 것을 활용
이때, Z인 경우에는 A로 변경하므로 나머지 연산을 활용
str[i] = (str[i] + 1 - 'A') % 26 + 'A'
위 식을 사용하면, Z에서 1을 더해도 나머지 연산으로 인해 A로 변경
과정
03. 정답 코드
더보기
// 실버 5 - 31825번 : 알파벳과 쿼리 (Easy)
// 작성자 : free4760(jeonghoe22)
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
// 200 * 200 = 40'000
int main()
{
// 입출력 최적화
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// 문자열 길이 N, 쿼리 개수 Q
int N, Q;
cin >> N >> Q;
string input;
cin >> input;
int query, start, end;
for(int i = 0; i < Q; i++)
{
cin >> query >> start >> end;
// 찾기
if(query == 1)
{
int result = 0;
char prev = ' ';
for(int idx = start-1; idx < end; idx++)
{
if(input[idx] != prev)
{
prev = input[idx];
result++;
}
}
cout << result << "\n";
}
// 구간에 있는 알파벳 변경
else
{
for(int idx = start-1; idx < end; idx++)
input[idx] = (input[idx] - 'A' + 1) % 26 + 'A';
}
}
}
읽어주셔서 감사합니다.
틀린 내용 지적은 언제나 환영입니다!
'게임 개발 > 알고리즘' 카테고리의 다른 글
| [BOJ 백준] 20303번 : 할로윈의 양아치(C++) (0) | 2026.02.27 |
|---|---|
| [BOJ 백준] 1988번 : 낮잠 시간(C++) (0) | 2026.02.17 |
| [BOJ 백준] 3020번 : 개똥벌레 (C++) (0) | 2025.05.13 |
| [BOJ 백준] 2559번 : 수열 (C++) (0) | 2025.05.12 |
| [BOJ 백준] 1081번 : 합 (C++) (0) | 2025.05.11 |