안녕하세요. 오늘은 로또를 살 거예요.

문제

https://www.acmicpc.net/problem/25183

아이디어

문자열에 있는 모든 길이가 5인 부분 문자열을 보면서 correct한지 체크해주면 됩니다. 하나라도 correct하면 됩니다.

correct한지 체크하는 방법은 모든 이웃한 두 쌍의 문자가 알파벳 상으로 이웃해야합니다. 즉, 뺐을때 -1이거나 1이여야 합니다.

이 조건을 잘 만족시켜주면 됩니다.

소스코드

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

bool correct(string s)
{
	for (int i = 0; i <= 3; i++)
		if (abs(s[i + 1] - s[i]) != 1)
			return false;
	return true;
}

int main(void)
{
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	string s;
	int len, i;

	cin >> len >> s; 
	for (i = 0; i < len - 4; i++)
	{
		if (correct(s.substr(i, 5)))
		{
			cout << "YES";
			return 0;
		}
	}
	cout << "NO";
}


감사합니다.

0개의 댓글