본문 바로가기
Algorithm/Beakjoon

[Java] baekjoon 1032 : 명령 프롬프트 / 문자열

by Amy97 2021. 7. 22.
728x90

문제 


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

 

1032번: 명령 프롬프트

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

www.acmicpc.net

구현 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
 
        int n = sc.nextInt(); // 파일 이름의 개수 입력받음
        String[] filename = new String[n];
        for (int i = 0; i < n; i++) { // 파일 이름의 개수만큼 for문 실행
            filename[i] = sc.next(); // 파일 이름 입력받음
        }
 
        boolean check;
 
        for (int i = 0; i < filename[0].length(); i++) { // 처음으로 입력된 파일 이름의 길이만큼 for문 실행 (파일 이름의 길이는 모두 같음)
            check = true// 첫 번째 for문 실행될 때마다 true로 초기화 
            for (int j = 0; j < n - 1; j++) { // (j + 1)번째 파일 이름과 비교해야 하므로 (n - 1)까지 for문 실행
                if (filename[j].charAt(i) != filename[j + 1].charAt(i)) { // j번째 파일 이름의 i번째 알파벳이 그다음 파일 이름의 i번째 알파벳과 다르면
                    check = false// check는 false가 된다
                    break// 하나라도 다르면 계속 비교할 필요 X
                }
            }
            if (check) // check가 true이면 (각 파일명의 i번째 알파벳이 동일하면)
                System.out.print(filename[0].charAt(i)); // i번째 알파벳 출력
            else // check가 false이면 (각 파일명의 i번째 알파벳이 하나라도 다르면)
                System.out.print("?"); // ? 출력
        }
 
    }
}
cs

결과 


728x90

댓글