본문 바로가기

백준

[백준] 1032번 : 명령 프롬프트 [Java]

https://www.acmicpc.net/problem/1032

 

1032번: 명령 프롬프트

첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은

www.acmicpc.net

 


 

 

● 문제

[백준] 1032번

 

 

 

 

 

● 접근 방법

String 배열의 크기를 n만큼으로 만들어준다.

다행히도 모든 n개의 글자의 길이는 같아서, 쉽게 문제 풀이가 가능하다.

 

String 배열을 cap이라고 두고, answer을 공백의 문자로 설정하자.

cap의 크기는 n이고 모든 글자수는 같으므로 cap[0]을 기준으로 잡고, cap[1~(n-1)] 까지 비교하면 된다.

 

for문으로 cap[i] 주소에 있는 문자열에 j번째 문자와 cap[i+1] 주소에 있는 문자열에 j번째 문자와 비교하여 한번이라도 틀리다면, answer의 문자에 '?'를, 아니라면 cap[i] 주소에 있는 문자열 j번째 문자를 붙여주면 해결되는 간단한 문제이다.

 

 

 

 

● 문제 풀이

import java.util.Scanner;

public class bak_1032 {
	public static void main(String[] args) {
		String answer = "";
		
		//입력
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String[] cap = new String[n];
		
		for(int i = 0; i < n; i++) {
			cap[i] = sc.next();
		}
		
		
		
		//풀이
		for(int i = 0; i < cap[0].length(); i++) {
			boolean flag = true;
			
			for(int j = 0; j < cap.length - 1; j++) {
				if(cap[j].charAt(i) != cap[j+1].charAt(i)) {  // 현재 주소의 문자와 앞주소의 문자를 비교
					flag = false;
					break;
				}
			}
			if(flag) answer += cap[0].charAt(i);	//한번이라도 틀린 것이 없다면 answer 문자열에 추가
			else answer += "?";	// 한번이라도 틀린 것이 있다면 answer에 '?' 추가
		}
		
		
		//출력
		System.out.println(answer);
	}
}