각 자리수의 합이 짝수인 수를 ebne(even but not even) 이라고 합니다.
주어진 인풋에서 특정 자리수를 제거하여 ebne을 만들 수 있으면, 그렇게 만든 수를 출력하고, 없으면 -1을 출력하는 문제입니다.
홀수 2개만 있으면 ebne을 만들 수 있으므로, input string에 대해서 0번째 위치부터 linear search를 하며 홀수 2개를 찾으면 그 2개를 붙여서 return 하고, 못찾으면 -1을 return하는 코드를 작성하면 됩니다.
#include<iostream>
#include<string>
using namespace std;
int main(){
int t, n;
string s;
cin >> t;
for (int i = 0; i < t; i ++){
cin >> n;
cin >> s;
string result = "";
int count = 0;
for (int j = 0; j < s.length() ; j ++){
int digit = atoi(s.substr(j,1).c_str());
if(digit % 2 == 1){
result += s[j];
count ++;
}
if(count == 2) break;
}
if(count == 2){
cout << result << endl;
} else{
cout << -1 << endl;
}
}
return 0;
}
반응형
'codeforce > #616 (Div.2)' 카테고리의 다른 글
Codeforces Round #616 (Div. 2) B. Array Sharpening (0) | 2020.02.12 |
---|