백준공부/java
[백준] 5555번 반지 문제! (silver 5
gomduri43
2022. 8. 10. 09:23
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
String findWord=br.readLine();
int n=Integer.parseInt(br.readLine());
int count=0;
for(int i=0; i<n; i++) {
String ring=br.readLine();
if(ring.contains(findWord)) {
count++;
}
//contains 함수를 써서, 그 단어가 반지안에 포함되어 있으면 count를 세는데,
//이때 반지는 원모양이다보니, 반지의 문자열끝에서 시작점과 연결된다.
//이말은 반지의 문자열 끝부터, 시작점을 이어서 새로운 문자열이 생성되는 느낌,
//ABCD라는 문자열을 찾아야하는데, BCD.....A라면 이는 반지라는 원의 특성에의해 ABCD가 존재한다.
//따라서, findWord문자열에 해당하는 길이만큼 잘라내어 뒤에 붙여보고,
//그렇게 함으로써 만들어진 새로운 문자열이 찾는 문자열을 포함하는지 찾아보게 구현했다.
else {
ring=ring.concat(ring.substring(0,findWord.length()));
if(ring.contains(findWord)) {
count++;
}
}
}
bw.write(count+"");
bw.flush();
}
}