본문 바로가기
백준

[백준] 1032번 : 명령 프롬프트 – JAVA [자바]

by Hongwoo 2022. 9. 5.
반응형

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

 

1032번: 명령 프롬프트

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 1032번 명령 프롬프트는 브론즈 1 난이도의 구현 및 문자열 문제이다. 이 문제에서는 N개의 파일 이름들이 주어진다. 파일 이름의 길이는 모두 같다. 그리고 파일들의 n번째 단어가 다르면 ?를 출력하고 n번째 단어가 모두 같으면 그 단어를 출력하면 된다. 

 

우선 예시를 한번 보겠다.

 

3
config.sys
config.inf
configures

 

이 예시에서는 3개의 파일 이름들이 주어졌다. 그리고 config 까지만 똑같고 마지막 4개의 단어들이 다르다. 따라서 config????를 출력해주면 된다.

 

이 문제는 간단한 배열을 이용해서 풀 수 있다. 우선 단어의 개수 N을 입력받고 크기가 N인 String형 배열을 선언해준다. 그리고 입력받는 모든 파일 이름들은 이 배열에 저장해준다.

 

문제에서 모든 파일 이름의 길이가 같기 때문에 첫 단어의 길이를 int형 변수 len에 저장해준다. 그리고 for 문을 이용해서 i = 0부터 i < len까지 모든 인덱스에 있는 단어를 배열에 있는 단어와 비교해주면 된다. 만약에 i번째 단어가 다르면 ?를 출력해주고 모두 같으면 그 단어를 출력해주면 된다.

 

자세한 코드는 아래에 있다.

 


  • 코드

 

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());
        String[] arr = new String[n];  //파일 이름 저장하는 배열
        for (int i = 0; i < n; i++) {
            arr[i] = br.readLine();  //파일 이름 배열에 저장하기
        }
        int len = arr[0].length(); 
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            boolean b = true;  //모든 파일의 i번째 단어가 같으면 true, 다르면 false
            char c = arr[0].charAt(i);  //첫 파일의 i번째 단어
            for (int j = 1; j < n; j++) {
                if (c != arr[j].charAt(i)) b = false;  //파일의 단어가 다르면 false로 바꿔주기
            }
            if (b) {
                sb.append(c);  //모든 파일의 단어가 같으면 그 단어 출력
            } else {
                sb.append("?");  //다르면 ? 출력
            }
        }
        System.out.print(sb);
    }
}

 

 

반응형

댓글