※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 25183번 문제인 인생은 한 방이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/25183
25183번: 인생은 한 방
문자열 $S$의 부분 문자열이란, 문자열의 연속된 일부를 의미한다.
www.acmicpc.net
주어지는 문자열의 첫 글자서부터 보면서 지금 확인 하는 문자가 이전 문자와 이웃한 문자인지, 즉 지금 확인하는 문자가 (이전문자 + 1) 또는 (이전문자 - 1)와 같은지를 체크하며 연속된 글자의 개수를 세나가자.
주어지는 문자열의 맨 처음과 맨 끝에 A~Z와는 연속할 수 없는 다른 문자가 하나씩 더 있다고 생각하고 구현한다면 첫 문자 또는 마지막 문자를 포함하는 (성질을 만족하는) 문자열의 길이를 구하는 구현을 특별한 예외처리 없이 편하게 할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
string s; cin >> s >> s; s += 'a';
int prev = 'a', cnt = 0, mx = 0;
for (auto l : s) {
int cur = (int)l;
if (cur == prev + 1 || cur == prev - 1) cnt++;
else {
mx = max(mx, cnt);
cnt = 1;
}
prev = cur;
}
if (mx < 5) cout << "NO";
else cout << "YES";
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 12725 // C++] Milkshakes (Small) (0) | 2022.08.14 |
---|---|
[BOJ 12726 // C++] Milkshakes (Large) (0) | 2022.08.14 |
[BOJ 6496 // C++] Cyclic antimonotonic permutations (0) | 2022.08.14 |
[BOJ 6134 // C++] Sunscreen (0) | 2022.08.13 |
[BOJ 20942 // C++] 신촌지역 초중고등학생 프로그래밍 대회 동아리 연합 대회 (0) | 2022.08.12 |