본문 바로가기

백준 온라인 저지 (BOJ) 문제풀이

백준 온라인 저지 (BOJ) 17502 클레어와 팰린드롬

문제

클레어는 길이가 N인 팰린드롬 문자열을 가지고 있습니다.

팰린드롬 문자열이란 앞에서부터 읽으나 뒤에서부터 읽으나 같은 문자열을 뜻합니다.

예를 들어, "rotator", "racecar", "a"는 팰린드롬 문자열이지만 "palindrome", "poq" 는 팰린드롬 문자열이 아닙니다.

하루는 장난기 많은 에드거가 클레어가 가지고 있는 팰린드롬 문자열의 일부를 지워버렸습니다.

그 때문에 클레어가 많이 화가 나 있습니다. 클레어를 위해 문자열을 복구해주세요.

입력

첫 번째 줄에 문자열의 길이 N (1 ≤ N ≤ 100) 이 주어집니다.

두 번째 줄에는 일부 문자들이 지워진 길이가 N인 팰린드롬 문자열이 주어집니다. 각 문자는 알파벳 소문자이거나 '?' 이며 '?' 일 경우 해당 문자가 지워졌음을 의미합니다.

주어지는 문자열은 적어도 한 개의 '?' 문자를 가집니다.

출력

입력으로 주어진 문자열을 팰린드롬이 되도록 '?' 문자들을 적절한 알파벳 소문자들로 바꾸어 출력합니다.

방법이 여러 가지인 경우 그 중 하나만 출력합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#pragma warning(disable:4996)
#pragma warning(disable:6031)
char input[101];
int main()
{
    int n;
    scanf("%d"&n);
    scanf("%s", input);
    for (int i = 0; i < n / 2; i++) {
        if (input[i] == '?' && input[n - 1 - i] == '?')input[i] = input[n - 1 - i] = 'a';
        else if (input[i] == '?' && input[n - 1 - i] != '?')input[i] = input[n - 1 - i];
        else if (input[i] != '?' && input[n - 1 - i] == '?')input[n - 1 - i] = input[i];
    }
    if (n % 2) {
        if (input[n / 2== '?')input[n / 2= 'a';
    }
    printf("%s\n", input);
    return 0;
}
cs

 

간단한 구현 문제였다.

 

양 쪽 다 물음표면 a를 넣어주고 한 쪽만 물음표면 대칭이 되게 알맞은 문자를 넣어주면 된다.