BAEKJOON/구현
백준 11094번 [꿍 가라사대](C++) -yes6686- 티스토리
yes6686
2025. 6. 5. 15:11
728x90
반응형
SMALL
백준 문제 풀이: 11094 (복권)
문제 링크: https://www.acmicpc.net/problem/11094
문제 설명:
입력으로 n개의 문장이 주어진다. 이 중에서 문장의 앞 10글자가 "Simon says"인 문장만을 찾아, 그 뒤에 이어지는 부분을 출력하는 문제이다. 만약 "Simon says"로 시작하지 않는다면 무시한다.
즉, "Simon says"라는 구문은 특정 명령을 의미하고, 그 구문이 있을 때만 뒤의 내용을 출력하는 형태이다.
문제 해결 코드
// 11094번: 복권
// "Simon says"로 시작하는 문장만 필터링해서 그 이후 문자열 출력
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
cin.ignore(); // 개행 문자 처리
string s;
for (int i = 0; i < n; i++) {
getline(cin, s);
if (s.length() < 10) continue; // 길이 짧은 문장은 건너뛰기
string sl = s.substr(0, 10); // 앞 10글자
string sr = s.substr(10); // 나머지 부분
if (sl == "Simon says") {
cout << sr << '\n'; // 조건 일치 시 출력
}
}
}
코드 설명
코드의 주요 로직과 사용된 알고리즘 설명.
- 핵심 알고리즘: 문자열 전처리 및 조건 필터링.
- 구현 세부사항:
cin.ignore()
: 개행 문자가 getline()에 영향을 주지 않도록 방지.s.substr(0, 10)
: 앞 10글자가 "Simon says"인지 확인.s.substr(10)
: 명령어 이후의 텍스트만 출력.
- 시간 복잡도 분석:O(n ⋅ m), 여기서 n은 문장 수, m은 각 문장의 평균 길이.
결과
"Simon says"로 시작하는 문장만 추출하여 그 이후 텍스트만 출력합니다.
예시 입력:
4
Simon says jump
Just do it
Simon says dance
Hello world
예시 출력:
jump
dance
다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!
728x90
반응형
LIST