Java/Java 알고리즘
백준 5555번 반지 JAVA 구현해보기
kimc
2022. 3. 22. 22:25
```
백준 5555번 반지 JAVA 구현해보기
```

이번 글을 통해 배워갈 내용
- 백준 5555번 풀이
https://www.acmicpc.net/problem/5555
5555번: 반지
당신은 N개의 반지를 가지고 있다. 각각의 반지는 대문자 10 문자로 이루어진 문자열이 새겨져 있다. 반지는 문자열의 시작과 끝이 연결된 형태로 문자가 새겨져 있다. 반지에 각인된 문자열을
www.acmicpc.net
백준 5555번 반지는
난이도 실버 등급의 문제로서
N개의 반지가 있습니다.
각 반지에는 대문자 10 문자로 이루어진 문자열이 새겨져 있고
문자열의 시작과 끝이 연결되있다 반지의 문자열을 거꾸로 읽지 않는다고 가정할 때
찾고자 하는 문자열을 입력받은 뒤
반지의 개수 N을 입력받고
찾는 문자열을 포함하는 반지의 개수를 세서 출력하면 되는 문제입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
입력받고
반지들을 돌면서 해당되는 문자열이 있다면 숫자를 세고
없다면 넘깁니다.
여기서 더 효율적인 방법이 많겠지만
저는 그냥 반지에 문자열을 두 번 써서 중간에 문자열이 있는지 없는지 확인하였습니다.
반지의 길이보다 찾는 문자열의 길이가 짧거나 같은 경우에는 이 방법으로 찾는다면 쉽게 코딩을 짤 수 있기 때문입니다.
전체 코드는 아래와 같습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
// 찾는 문자열
final String seekingStr = br.readLine();
// 반지의 개수
final int numOfRings = Integer.parseInt(br.readLine());
// 반지들과 반지 마다 10개의 문자열 정보
final List<String> rings = new ArrayList<>();
for (int i = 0; i < numOfRings; i++) {
rings.add(br.readLine());
}
// 반지마다 해당되는 문자열이 있는지 확인
long cnt = rings.stream().filter(str -> (str + str).contains(seekingStr)).count();
// 출력
System.out.print(cnt);
}
}
//codemasterkimc.tistory.com [김씨의 코딩 스토리]
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
728x90