백준 알고리즘(코딩테스트 공부)

반지

Dev.gunnuuu 2024. 9. 19. 13:24

문제

당신은 N개의 반지를 가지고 있다. 각각의 반지는 대문자 10 문자로 이루어진 문자열이 새겨져 있다. 반지는 문자열의 시작과 끝이 연결된 형태로 문자가 새겨져 있다. 반지에 각인된 문자열을 거꾸로 읽는 걱정은 없다.

찾고자하는 문자열이 주어졌을 때 그 문자열을 포함하는 반지가 몇 개인지를 발견하는 프로그램을 작성하라.

입력

입력은 총 2 + N 줄 이다.

첫 번째 줄에는 1 자 이상 10 자 이하의 대문자로 구성된 찾고자 하는 문자열이 적혀있다.

두 번째 줄에는 반지의 개수 N (1 ≦ N ≦ 100)이 적혀있다.

2+i 줄(1 ≦ i ≦ N)엔 i개의 반지에 새겨져있고, 10 문자로 이루어진 문자열이 적혀있다.

출력

찾고자하는 문자열을 포함 반지의 개수를 나타내는 정수를 한 줄로 출력하라.

예제 입력 1 

ABCD
3
ABCDXXXXXX
YYYYABCDXX
DCBAZZZZZZ

예제 출력 1 

2

예제 입력 2 

XYZ
1
ZAAAAAAAXY

예제 출력 2 

1

 

풀이

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args)throws IOException{
        int answer = 0;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        String str = br.readLine();
        int count = Integer.parseInt(br.readLine());
            
        for(int i = 0; i<count; i++){
            String text = br.readLine();
            if((text + text).contains(str)){
                answer++;
            }
        }
        System.out.print(answer);
    }
}

 

간단한 문제였다 BufferedReader로 count만큼 받으며 각각 읽어온 str을 포함하는 문자열인지 아닌지 확인하면 되었다. 이때 간단히 text.contains로 판별하여 오답이 나왔는데 반지에 둘러서 문자열이 연결된 순환 구조 이므로 text + text 를해 주오 순환 구조의 모든 경우를 커버 한 뒤에 비교해서 만족할경우 answer을 늘려주는 방식으로 구현할 수 있었다

'백준 알고리즘(코딩테스트 공부)' 카테고리의 다른 글

나는야 포켓몬 마스터 이다솜  (3) 2024.09.20
온라인 판매  (0) 2024.09.19
전국 대학생 프로그래밍 대회 동아리 연합  (0) 2024.09.19
그룹 단어 체커  (0) 2024.09.18
카드1  (1) 2024.09.18