Algorithm/문제풀이

[BOJ] 백준 5555 - 반지 - Java 풀이

Razelo 2021. 7. 12. 21:17

 

 

 

괜히 char배열로 받아서 하나씩 비교하다가 빙빙 돌고서야 제대로된 해답을 찾았다. 

원형으로 연결하는 것을 굳이 인덱스로 원형으로 따지기 보다는

그냥 output을 하나 더 더해서 원형처럼 효과를 내주는 것이 좋다는 것을 뒤늦에 알았다.

 

쉽게 말하면 그냥 하나의 String에서 검사해야한다면 그걸 원형으로 돌기 위해서 인덱스를 가지고 연산하는 둥의 고생을 하지 말고 그냥 String 복사본을 뒤에 붙여주는거다. "Hello" + "Hello" = "HelloHello" 가 되는거다. 여기서 돌면 원형으로 도는 것과 비슷한 효과를 얻을 수 있다. 

 

이게 더 간결하다. 

 

그리고 난 뒤에 contains를 이용해서 해당 키워드가 받은 문자열에 존재하는지만 확인하면 되는거다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String word = br.readLine();
		int n = Integer.parseInt(br.readLine());
		int count =0 ; 
		for(int i = 0; i< n; i++) {
			String output = br.readLine();
			output += output; //원형으로 만들어주는 효과 
			if(output.contains(word))
				count++;
		}
			
		System.out.println(count);
	}
}

 

반응형