백준 25183 - 인생은 한 방

곽무경·2022년 5월 20일
0

Baekjoon

목록 보기
4/14

25183 - 인생은 한 방 https://www.acmicpc.net/problem/25183

티어 - Bronze 1
알고리즘 분류 - 구현, 문자열
나의 해결 방안 - 문자열

문제

재형이는 인생 역전을 위해 오늘도 로또를 샀다. 로또를 구매하면 알파벳 대문자 NN개가 일렬로 적힌 문자열이 주어진다. 로또에 당첨되기 위해선 인접한 문자가 모두 사전상에서 이웃한, 길이 55 이상의 부분 문자열이 로또 문자열에 존재해야 한다.

예를 들어 'C'와 사전상에서 이웃한 문자는 'B'와 'D'이고, 'Z'와 이웃한 문자는 'Y' 하나이며, 자기 자신과는 이웃하지 않는다. 따라서, 로또 문자열이 "ABCDE", "ASGXYZYXE", "WEFGHIJKA"인 경우는 당첨이고, "ABCDF", "CXYZAB", "AAAAA"는 당첨되지 않은 경우이다.

알파벳 대문자 NN개로 이루어진 문자열이 주어질 때, 로또에 당첨되었는지를 구해보자.

입력

첫째 줄에 로또 문자열의 길이 N(5N100000)N(5 \leq N \leq 100\,000)이 주어진다.
둘째 줄에 로또 문자열 SS가 주어진다.

출력

로또에 당첨된 경우라면 YES를, 아니면 NO를 출력한다.

#include <iostream>
#include <string>

using namespace std;

int main(void) {
    ios_base::sync_with_stdio(0); cin.tie(0);
	string s;
	int n;
	cin >> n;
	cin >> s;
	int len=s.length();
	for(int i=0;i<=len-5;i++) {
		bool flag=true;
		for(int j=i;j<i+4;j++) {
			if (abs(s[j]-s[j+1])!=1) {
				flag=false; break;
			}
		}
		if (flag) {
			cout << "YES"; return 0;
		}
	}
	cout << "NO";
}

0개의 댓글