728x90
반응형
SMALL
백준 문제 풀이: 32297 (가오리의 영어 이름은?)
문제 링크: https://www.acmicpc.net/problem/32297
문제 설명:
상혁이는 영어 문장에서 '가오리(gori)'라는 문자열이 등장하는지를 확인하고 싶어합니다. 주어진 문자열에 "gori"라는 단어가 연속된 부분 문자열로 등장하면 "YES"를 출력하고, 그렇지 않으면 "NO"를 출력하는 간단한 문자열 탐색 문제입니다.
문제 해결 코드
// 'gori'가 연속된 문자열로 포함되어 있는지 확인
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
string s;
cin >> s;
// 문자열을 한 글자씩 탐색하며 "gori" 등장 여부 확인
for (int i = 0; i < n - 3; i++) {
if (s[i] == 'g' && s[i+1] == 'o' && s[i+2] == 'r' && s[i+3] == 'i') {
cout << "YES" << '\n';
return 0;
}
}
cout << "NO" << '\n';
}
코드 설명
- 핵심 알고리즘: 문자열 슬라이딩 윈도우 방식으로 부분 문자열 탐색. 길이 4의 부분 문자열이 "gori"인지 순차적으로 검사합니다.
- 구현 세부사항:
- n - 3까지 인덱스를 반복하면서 현재 위치에서 4글자가 "gori"인지 체크
- 찾는 순간 "YES" 출력 후 종료, 끝까지 못 찾으면 "NO" 출력
- 시간 복잡도 분석: O(n) — 문자열 길이만큼 순차적으로 한 번만 검사
결과
문자열 안에 "gori"라는 부분 문자열이 포함되어 있는지 여부를 출력합니다.
예시 입력:
15
ilovegorithm
예시 출력:
YES
간단한 문자열 탐색 문제이지만, 부분 문자열을 정확히 찾는 기초 로직 연습에 좋습니다. KMP 등 고급 알고리즘이 필요한 경우는 아니지만, 문자열 처리에 익숙해지기에 좋은 문제입니다!
728x90
반응형
LIST
'BAEKJOON > 문자열' 카테고리의 다른 글
백준 33985번 [그거 왜 말해!](C++) -yes6686- 티스토리 (0) | 2025.06.07 |
---|---|
백준 2607번 [비슷한 단어](C++) -yes6686- 티스토리 (0) | 2025.02.18 |
백준 1152번 [단어의 개수](JAVA)-yes6686- 티스토리 (0) | 2025.01.12 |
백준 2675번 [문자열 반복](JAVA)-yes6686- 티스토리 (0) | 2025.01.11 |
백준 9243번 [파일 완전 삭제](C++) -yes6686- 티스토리 (1) | 2024.12.15 |