※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 5555번 문제인 반지이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/5555
5555번: 반지
당신은 N개의 반지를 가지고 있다. 각각의 반지는 대문자 10 문자로 이루어진 문자열이 새겨져 있다. 반지는 문자열의 시작과 끝이 연결된 형태로 문자가 새겨져 있다. 반지에 각인된 문자열을
www.acmicpc.net
찾으려는 문자열을 f라 하고 반지에 적힌 주어진 문자열을 s라 할 때, 주어진 반지에 f가 있는지의 여부는 s 뒤에 s를 한번 더 이어붙인 s+s에서 f를 탐색하는 것으로 해결할 수 있다.
string의 substr을 이용해 구현을 간단히 하고 문제를 해결하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int ans = 0;
string s; cin >> s; int slen = s.length();
int N; cin >> N;
while (N--) {
string ss; cin >> ss;
ss += ss;
for (int i = 0; i < 10; i++) {
if (s == ss.substr(i, slen)) {
ans++;
break;
}
}
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 27590 // C++] Sun and Moon (0) | 2023.02.27 |
---|---|
[BOJ 5612 // C++] 터널의 입구와 출구 (0) | 2023.02.27 |
[BOJ 16480 // C++] 외심과 내심은 사랑입니다 (0) | 2023.02.25 |
[BOJ 4141 // C++] Numbersrebmun (0) | 2023.02.25 |
[BOJ 24767 // C++] Beehives (0) | 2023.02.25 |