반응형
출처: https://www.acmicpc.net/problem/1032
Approach
문자열의 길이가 모두 동일하며 asterisk(*) 같은 특수문자가 없어서
어렵지 않게 구현할 수 있는 문제이다.
N개의 문자열이 주어질 때, 첫번째 문자열을 기준으로
다른 문자열에서 특정 위치의 문자가
- 모두 같다면 → '해당 문자'
- 한개라도 다른 경우 → '?'
C++
#include <iostream>
#include <string>
using namespace std;
int N, len;
string pivot, tmp;
int main(void)
{
// freopen("input.txt", "r", stdin);
cin >> N >> pivot;
string ans = pivot;
len = pivot.length();
while (N-- > 1)
{
cin >> tmp;
for (int i = 0; i < len; i++)
{
if (pivot[i] != tmp[i])
{
ans[i] = '?';
}
}
}
cout << ans << "\n";
}
Java
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 1 <= N <= 50 (자연수)
int N = Integer.parseInt(sc.next());
String[] str = new String[N];
for(int i=0; i<N; i++) {
str[i] = sc.next();
}
int len = str[0].length();
char[] result = new char[len];
// 입력된 문자열의 모든 문자에 대해(문자열의 길이는 동일하다.)
for(int i=0; i<len; i++) {
boolean flag = false;
// 해당 위치(index)의 모든 문자열을 비교해서 특정문자열인지 '?'인지 판단한다.
for(int j=0; j<N-1; j++) {
if(str[j].charAt(i) != str[j+1].charAt(i)) {
flag = true;
break;
}
}
if(flag) { // 한개의 문자열에서 문자값이 다르다. (flag = true)
result[i] = '?';
}else { // 모든 문자열에서 해당 위치의 문자가 동일하다. (flag = false)
result[i] = str[0].charAt(i);
}
}
System.out.println(result);
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 1085 직사각형에서 탈출 (0) | 2021.08.25 |
---|---|
[BOJ] 백준 1037 약수 (0) | 2021.08.24 |
[BOJ] 백준 1026 보물 (0) | 2021.08.22 |
[BOJ] 백준 12101 1, 2, 3 더하기 2 (0) | 2021.08.10 |
[BOJ] 백준 9095 1, 2, 3 더하기 (0) | 2021.08.09 |
댓글