반응형
https://www.acmicpc.net/problem/5555
특정 문자열을 찾는 find함수를 사용해 푼 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
찾을 문자열 stringToFind, 반지에 써있는 문구 ringString, 반지 개수 n, 정답 출력할 변수 cnt를 선언한 후 적절히 입력받습니다.
📔 풀이과정
제한이 적으므로 다양한 풀이가 있습니다. brute force로도 풀 수 있지만 std::find함수를 사용하면 간단히 특정 문자열이 있는지 O(N)으로 검사할 수 있습니다. 문자열을 찾지 못했다면 string::npos를 반환하는 함수입니다.
for loop를 수행하며 매 반지 문자열을 입력받습니다.
1. 반지는 둥글기 때문에 한쪽방향으로 계속 돌리며 읽을 수 있습니다. 따라서 입력받은 ringString += ringString을 해준다면 한 바퀴의 문자열이 됩니다.
2. find함수 결과가 string::npos가 아니라면 stringToFind를 찾은 경우이므로 cnt++해줍니다.
📔 정답출력
cnt를 출력해줍니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
string stringToFind, ringString;
int n, cnt;
int main(){
cin >> stringToFind;
cin >> n;
for(int i = 0; i < n; i++) {
cin >> ringString;
ringString += ringString;
if(ringString.find(stringToFind) != string::npos) cnt++;
}
cout << cnt;
}
'Algorithm > String' 카테고리의 다른 글
(C++) - 백준(BOJ) 15000 : CAPS (0) | 2022.07.14 |
---|---|
(C++) - 백준(BOJ) 9324 : 진짜 메시지 (0) | 2022.04.16 |
(C++) - 프로그래머스(2020 KAKAO BLIND RECRUITMENT) : 문자열 압축 (0) | 2021.08.21 |
(C++) - 백준(BOJ) 1755번 : 숫자놀이 (0) | 2021.08.16 |
(C++) - 백준(BOJ) 15927번 : 회문은 회문아니야!! (2) | 2021.08.13 |