비버놀로지

[BAEKJOON 백준] 1032 명령 프롬프트 본문

ALGORITM/JAVA

[BAEKJOON 백준] 1032 명령 프롬프트

KUNDUZ 2021. 1. 10. 14:47
728x90

www.acmicpc.net/problem/1032

 

1032번: 명령 프롬프트

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

www.acmicpc.net

이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. 패턴에는 알파벳과 "." 그리고 "?"만 넣을 수 있다. 가능하면 ?을 적게 써야 한다. 그 디렉토리에는 검색 결과에 나온 파일만 있다고 가정하고, 파일 이름의 길이는 모두 같다.

 

위에와 같이 모든 예제에 config가 들어가있고, 나머지 세문자는 다 다르기 때문에 ?를 이용을 해서 출력을 만들어 준다.

받은 입력은 한글자씩 나누어서 배열을 만들어 줍니다.

 

그렇게 만들어진 배열을 비교해야 한다. 그중 세로로 문자가 다 같다면 visit이라는 boolean 배열을 만들어 false를 넣어주고, 하나라도 다르다면 true를 넣어준다.

 

그래서 false라면 그 칸에 해당하는 문자를 출력해 주고, true 라면 ?를 출력해 준다.

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		char arr[][]=new char[N][];
		for (int i = 0; i < N; i++) {
			String s=sc.next();
			arr[i]=s.toCharArray();
		}
		boolean visit[]=new boolean[arr[0].length];
		for (int i = 0; i < arr[0].length; i++) {
			char temp=arr[0][i];
			for (int j = 1; j < N; j++) {
				if(arr[j][i]!=temp)visit[i]=true;
			}
		}
		for (int i = 0; i < visit.length; i++) {
			if(!visit[i]) {
				System.out.print(arr[0][i]);
			}else {
				System.out.print("?");
			}
		}
	}
}
728x90

'ALGORITM > JAVA' 카테고리의 다른 글

[BAEKJOON 백준] 1110 더하기 사이클  (0) 2021.01.10
[BAEKJOON 백준] 1074 Z  (0) 2021.01.10
[BAEKJOON 백준] 1008 A/B  (0) 2021.01.10
[BAEKJOON 백준] 1001 A-B  (0) 2021.01.10
[BAEKJOON 백준] 1000 A+B  (0) 2021.01.10
Comments