728x90
반응형
문제
시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 여기서 dir이라고 치면 그 디렉토리에 있는 서브디렉토리와 파일이 모두 나온다. 이때 원하는 파일을 찾으려면 다음과 같이 하면 된다.
dir *.exe라고 치면 확장자가 exe인 파일이 다 나온다. "dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다. 예를 들어, dir a?b.exe라고 검색하면 파일명의 첫 번째 글자가 a이고, 세 번째 글자가 b이고, 확장자가 exe인 것이 모두 나온다. 이때 두 번째 문자는 아무거나 나와도 된다. 예를 들어, acb.exe, aab.exe, apb.exe가 나온다.
이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. 패턴에는 알파벳과 "." 그리고 "?"만 넣을 수 있다. 가능하면 ?을 적게 써야 한다. 그 디렉토리에는 검색 결과에 나온 파일만 있다고 가정하고, 파일 이름의 길이는 모두 같다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
List<String> inputs = new ArrayList<>();
for (int i = 0; i < n; i++) {
inputs.add(reader.readLine());
}
List<Integer> differences = new ArrayList<>();
for (int i = 0; i < inputs.get(0).length(); i++) {
boolean isDiff = false;
for (int j = 0; j < inputs.size() - 1; j++) {
if (inputs.get(j).charAt(i) != inputs.get(j + 1).charAt(i)) {
isDiff = true;
break;
}
}
if(isDiff) {
differences.add(i);
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < inputs.get(0).length(); i++) {
if (differences.contains(i)) {
sb.append("?");
} else {
sb.append(inputs.get(0).charAt(i));
}
}
System.out.println(sb);
}
}
해결
생각
참고
링크
728x90
반응형
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준 1019번 문제, JAVA] 책 페이지 (0) | 2023.03.12 |
---|---|
[백준 1057번 문제, JAVA] 토너먼트 (0) | 2023.03.09 |
[백준 2477번 문제, JAVA] 참외밭 (0) | 2023.03.06 |
[백준 1000번 문제, JAVA] 네 번째 점 (0) | 2023.03.05 |
[백준 1100번 문제, JAVA] 하얀 칸 (0) | 2023.03.04 |