https://www.acmicpc.net/problem/1544
[난이도]
- Silver 4
[알고리즘]
- 부르트 포스
[정답 코드]
import org.w3c.dom.html.HTMLParagraphElement;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter((new OutputStreamWriter(System.out)));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
List<String> list = new ArrayList<>();
for (int i = 0; i < N; i++) {
list.add(br.readLine());
}
for (int i = 0; i < N; i++) {
String tmp1 = list.get(i);
for (int j = i + 1; j < N; j++) {
if (tmp1.length() == list.get(j).length()) {
String tmp2 = list.get(j) + list.get(j);
if (tmp2.contains(tmp1)) {
list.remove(j);
N--;
j--;
}
}
}
}
System.out.println(N);
bw.flush();
bw.close();
br.close();
}
}
[풀이]
예를들어 turepic이라는 단어를 2번연속 적으면 turepicturepic 이라는 단어가 만들어 지는데, 이 문자열안에 picture라는 단어가 존재하는지 검사하는 방법을 사용했다.
1. 배열이 아닌 ArrsyList에 입력값을 받아준다.
2. 검사할 단어와 비교하려는 단어의 길이가 같다면 검사를 해준다.
3. 검사 결과 사이클 단어가 맞다면 비교한 단어를 list에서 제거해준다.
- 그냥 제거해주면 list의 인덱스가 한칸씩 밀리기 때문에 j--도 같이 해준다.
- list를 하나 지운것이기 때문에 N--도 해준다. N--를 하지않는다면 list 인덱스밖을 검사하려고 시도하기 때문에 오류가 발생한다.
'코딩테스트' 카테고리의 다른 글
백준 5568: 카드 놓기[JAVA] (0) | 2024.04.14 |
---|---|
백준 1639: 행운의 티켓[JAVA] (0) | 2024.04.13 |
백준 7568: 덩치[JAVA] (0) | 2024.04.12 |
백준 1018: 체스판 다시 칠하기[JAVA] (0) | 2024.04.11 |
백준 2057: 팩토리얼 분해[JAVA] (0) | 2024.04.10 |