반응형
https://www.acmicpc.net/problem/1032
- 문제
- 문제 풀이
백준 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);
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 2420번 : 사파리월드 – JAVA [자바] (0) | 2022.09.07 |
---|---|
[백준] 2530번 : 인공지능 시계 – JAVA [자바] (2) | 2022.09.07 |
[백준] 2914번 : 저작권 – JAVA [자바] (0) | 2022.08.17 |
[백준] 1259번 : 팰린드롬수 – JAVA [자바] (0) | 2022.08.16 |
[백준] 2743번 : 단어 길이 재기 – JAVA [자바] (0) | 2022.08.16 |
댓글