📝 문제
백준 - 1032번 명령 프롬프트
📝 답안
📌 작성 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
ArrayList<String[]> arr = new ArrayList<>();
for (int i = 0; i < n; i++) {
arr.add(br.readLine().split(""));
}
String[] result = Arrays.copyOf(arr.get(0), arr.get(0).length);
for (int i = 0; i < n; i++) {
String[] a = arr.get(i);
for (int j = i+1; j < n; j++) {
String[] b = arr.get(j);
for (int k = 0; k < a.length; k++) {
if (!a[k].equals(b[k]) && !result[k].equals("?")) {
result[k] = "?";
}
}
}
}
System.out.println(String.join("", result));
}
}
📌 결과
📌 코드 풀이
int n = Integer.parseInt(br.readLine());
ArrayList<String[]> arr = new ArrayList<>();
for (int i = 0; i < n; i++) {
arr.add(br.readLine().split(""));
}
- 단어를 String[]로 변환하여 담을 ArrayList인 arr 선언
- for문을 이용하여 입력 받으면서 String을 String[]로 변환 후 arr에 담기
String[] result = Arrays.copyOf(arr.get(0), arr.get(0).length);
- 리턴할 문자열을 만들기 위해서 배열 하나를 선언하는데, 이 때 내용은 그냥 첫번째 문자열을 기준으로 작성함
for (int i = 0; i < n; i++) {
String[] a = arr.get(i);
for (int j = i+1; j < n; j++) {
String[] b = arr.get(j);
for (int k = 0; k < a.length; k++) {
if (!a[k].equals(b[k]) && !result[k].equals("?")) {
result[k] = "?";
}
}
}
}
- 앞에서부터 비교해서 만약 문자가 다르면 ?로 변환
System.out.println(String.join("", result));