[Java] 백준 - 1032번 명령 프롬프트 (Bronze I)

배똥회장·2022년 8월 2일
0
post-custom-banner

📝 문제

백준 - 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());
  • n : 가져올 단어 개수
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));	
  • String.join함수로 묶은 후 리턴
profile
어쩌면 개발자
post-custom-banner

0개의 댓글