Problem Solving/BOJ

[백준 / BOJ] C++ 1032 명령 프롬프트

nageune 2023. 2. 7. 18:27
728x90
반응형

1032번: 명령 프롬프트

 

문제

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

 

1032번: 명령 프롬프트

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

www.acmicpc.net

 

 

풀이

입력받은 문자열들 중 공통되는 문자만 출력하고 나머지는 ?로 출력하는 문제다.

  1. 모든 문자열을 입력받아 배열에 넣어준다.
  2. for문으로 첫 번째 문자열의 각 index의 문자를 나머지 문자열들의 같은 index의 문자와 비교한다.
  3. 모든 문자열에서 해당 index에 문제가 없다면 그 문자를 정답 배열에 추가한다.
  4. 한 번이라도 다르다면 for문을 탈출하고 정답 배열에 ?를 추가한다.
  5. 정답 배열의 원소들을 출력한다.

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  vector<string> v(n);
  vector<char> ans;
  for (int i = 0; i < n; i++)
    cin >> v[i];
  for (int i = 0; i < v[0].size(); i++) {
    int err = 0;
    string s = v[0];
    for (int j = 0; j < n; j++)
      if (s[i] != v[j][i]) {
        err++;
        break;
      }
    if (err)
      ans.push_back('?');
    else
      ans.push_back(s[i]);
  }
  for (char c : ans)
    cout << c;
  return 0;
}

 

728x90
반응형