시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 여기서 dir이라고 치면 그 디렉토리에 있는 서브디렉토리와 파일이 모두 나온다. 이때 원하는 파일을 찾으려면 다음과 같이 하면 된다.
dir *.exe라고 치면 확장자가 exe인 파일이 다 나온다. "dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다. 예를 들어, dir a?b.exe라고 검색하면 파일명의 첫 번째 글자가 a이고, 세 번째 글자가 b이고, 확장자가 exe인 것이 모두 나온다. 이때 두 번째 문자는 아무거나 나와도 된다. 예를 들어, acb.exe, aab.exe, apb.exe가 나온다.
이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. 패턴에는 알파벳과 "." 그리고 "?"만 넣을 수 있다. 가능하면 ?을 적게 써야 한다. 그 디렉토리에는 검색 결과에 나온 파일만 있다고 가정하고, 파일 이름의 길이는 모두 같다.
입력
첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 알파벳과 "." 그리고 "?"로만 이루어져 있다.
출력
첫째 줄에 패턴을 출력하면 된다.
입력을 몇개를 받든 중요한 것은 하나의 문자열을 기준으로 다른 모든 문자열을 비교해도 된다는 것이다. 어차피 다른 문자열이 무슨 문자열로 들어오든 기준이 되는 문자열과 다르면 그 기준이 어떤 문자열이든 '?' 이 되는 것이므로 각각을 전부 기준 문자열과 비교시킨다.
그리고 결과로 출력될 문자열은 첫번째 문자열을 그대로 받은 후에 들어오는 각각의 문자열을 전부 첫번째 문자열과 비교해서 다른 인덱스부터 결과 문자열의 값을 ?로 바꾸어준다.
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
int N,index;
cin >> N;
string first,result;
cin >> first;
result = first;
for(int i=1; i<N; i++)
{
string temp;
cin >> temp;
for(int j=0; j<first.size(); j++)
{
if(temp[j]!=first[j])
result[j]='?';
}
}
cout<<result;
}
'Algorithm' 카테고리의 다른 글
백준 1927번 최소힙 (0) | 2019.07.23 |
---|---|
백준 10451번 순열 사이클 (0) | 2019.07.22 |
백준 10808번 알파벳 개수 (0) | 2019.07.21 |
백준 11004번 K번째 수 (0) | 2019.07.20 |
백준 1773번 폭죽쇼 (0) | 2019.07.19 |