해결방법
문제를 해결하는 핵심 아이디어는 isalpha()메서드이다. 기존에는 코드를 한번 순회하면서 '?'와 일치하는지를 찾아서 교체했는데 그 방식은 통하지 않아서 찾다가 나온 방법이다.
isalpha()를 사용하면 알파벳인 경우에는 true, 아니라면 false를 반환하게 된다.
즉, 대칭되는 문자열에서 알파벳인 경우에는 나머지 하나가 ?라도 동일한 알파벳을 대입해준다는 의미이다.
정답 코드
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int N;
cin >> N;
vector<char> Arr(N);
for (int i = 0; i < N; i++)
{
cin >> Arr[i];
}
for (int i = 0; i < N; i++)
{
if (isalpha(Arr[i]))
{
Arr[N - i - 1] = Arr[i];
}
}
for (int i = 0; i < N; i++)
{
if (Arr[i] == '?')
{
Arr[i] = 'a';
}
}
for (int i = 0; i < N; i++)
{
cout << Arr[i];
}
cout << endl;
return 0;
}
'코딩테스트' 카테고리의 다른 글
BOJ - 불안정한 수열 28323 (0) | 2024.11.18 |
---|---|
BOJ - 약수 1037 (0) | 2024.11.14 |
BOJ - 나누기 1075 (0) | 2024.11.13 |
BOJ - 고무오리 디버깅 20001 (0) | 2024.11.12 |
BOJ - 골뱅이 찍기 23805 (0) | 2024.11.11 |