반응형
https://www.acmicpc.net/problem/2179
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
public class Main {
static int stoi(String s) {
return Integer.parseInt(s);
}
static int N;
static int firstIdx, secondIdx, maxCount;
static List<String> words = new ArrayList<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = stoi(st.nextToken());
for (int i = 0; i < N; i++) {
words.add(br.readLine());
}
words = words.stream().distinct().collect(Collectors.toList());
for (int i = 0; i < N - 1; i++) {
String firstWord = words.get(i);
for (int j = i + 1; j < N; j++) {
String secondWord = words.get(j);
int count = 0;
for (int k = 0; k < Math.min(firstWord.length(), secondWord.length()); k++) {
if (firstWord.charAt(k) != secondWord.charAt(k)) {
break;
}
count++;
}
if (maxCount < count) {
maxCount = count;
firstIdx = i;
secondIdx = j;
}
}
}
System.out.println(words.get(firstIdx));
System.out.println(words.get(secondIdx));
}
}
코드는 위와 같다.
조건 중에 같은 단어는 제외한다는 조건이 있었기 때문에, 우선 다 입력을 받고 distinct 로 중복을 제거해주었다.
백준은 java 17이 없는건지, toList() 로 바로 안 돼서 불편쓰,,
순서 상관 없으므로 이중 포문으로 하는데 첫 인덱스 이후만 단어를 돌면서 길이를 둘 중 짧은 걸로 비교하고, 길이가 최대면 따로 인덱스를 저장해뒀다가 나중에 출력한다.
반응형
'알고리즘 🤔' 카테고리의 다른 글
[프로그래머스 자바] 주식가격 (Lv.2) (0) | 2024.05.23 |
---|---|
[프로그래머스 자바] 다리를 지나는 트럭 (Lv.2) (0) | 2024.05.22 |
[프로그래머스 자바] 베스트앨범 (Lv.3) (0) | 2024.05.20 |
[프로그래머스 자바] 방문 길이 (Lv.2) (0) | 2024.04.04 |
[백준 자바 1747] 소수&팰린드롬 (실버 1) (0) | 2024.04.03 |