본문 바로가기
Programming/BOJ

백준 #1032 명령 프롬프트

by 작은별하나 2019. 12. 25.
반응형

이번 문제는 문자열 처리하는 프로그램을 작성하는 것입니다.  문자열 처리는 성격상 배열, 포인터, C 문자열의 특성 등을 잘 알지 못하면 어려울 수 있습니다.

 

백준 사이트의 문제는 아래의 링크에 있습니다.

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

 

1032번: 명령 프롬프트

첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 알파벳과 "." 그리고 "?"로만 이루어져 있다.

www.acmicpc.net

문제는 주어진 여러개의 문자열을 보고 공통된 문자들은 그대로 두고 공통되지 않은, 즉, 그 위치에 올 수 있는 문자들이 여러가지인 경우 ?을 표현하게 하는 것입니다.

 

예를 들어서,

3
config.sys
config.inf
configures

과 같은 문자열이 들어왔다면, 앞에 config는 모두 공통되고 나머지는 공통되지 않았으므로 config???? 이라는 출력을 내면 됩니다.

 

알고리즘이라고 짤만한 것은 별로 없습니다.  전 첫 단어를 보관하고 있다가, 들어오는 문자열과 다른 글자가 바뀐 게 있으면, 해당 문자위치에 '?' 을 마크하였습니다.  뭐 이미 '?'로 마크된 경우 건너뛰어도 되겠고, 아니어도 됩니다.  크게 문제될 것은 없다고 봅니다.

 

다음은 제가 작성한 소스입니다.  소스는 참고용으로 봐주세요.

//----------------------------------------------------------------------------------------
//  baekjoon #1032 - Command Prompt
//    - by Aubrey Choi
//    - created at 2019-09-13
//----------------------------------------------------------------------------------------
#include <stdio.h>

int main()
{
  int n;
  char p[52], w[52];
  scanf("%d%s",&n,p);
  while(--n) { scanf("%s", w);  for(int i=0;p[i];i++) if(p[i]!='?'&&p[i]!=w[i]) p[i]='?'; }
  puts(p);
}
728x90

'Programming > BOJ' 카테고리의 다른 글

백준 #1037 약수  (0) 2019.12.26
백준 #1036 36진수  (0) 2019.12.26
백준 #1026 보물  (0) 2019.12.25
백준 #1024 수열의 합  (0) 2019.12.25
백준 #1021 회전하는 큐  (3) 2019.12.25

댓글