[문제보기]
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
[풀이과정]
문제에서 입력값으로 나오는 문자열에는 'a', 'b', 'c'만 나온다고 했기 때문에
팰린드롬을 안 만들기 위한 방법은 'abc', 'acb'처럼 3개의 문자가 사용이 됐을 때, 만들어지지가 않는다.
그렇기 때문에 먼저 'a', 'b', 'c'가 몇 번 나오는지에 대한 개수를 구하였다.
이후, 'a', 'b', 'c'의 개수 중 min값을 찾은 후 각 개수에 대해 min값을 빼주었다. 그리고 남은 숫자에 대해서
2 이상이 나올 경우 팰린드롬이 형성('aa', 'bb', 'cc')이 되므로 flag에 false를 넣어주었다.
[소스보기]
#include <iostream>
#include <string>
using namespace std;
int main(){
cin.tie(0);
cout.sync_with_stdio(false);
int T;
cin >> T;
for(int test = 1; test <= T; test++){
string s;
cin >> s;
int cnt[3] = {0};
int Min = 987654321;
bool flag = true;
for(int i=0; i<s.size(); i++){
cnt[s[i] - 'a']++;
}
for(int i=0; i<3; i++){
if(Min > cnt[i])
Min = cnt[i];
}
for(int i=0; i<3; i++){
cnt[i] -= Min;
if(cnt[i] >= 2){
flag = false;
break;
}
}
cout << "#" << test << " " ;
if(flag)
cout << "YES" << "\n";
else
cout << "NO" << "\n";
}
}
[해결과정 중 실수한 부분]
문제를 보고 생각을 했는데 어떻게 풀어야 될지 몰라서 블로그를 참고를 했다.
[참고한 자료]
https://m.blog.naver.com/tkddn0928/221755198354
'알고리즘 스터디 > SW_Expert_Academy' 카테고리의 다른 글
| [SWEA 8424][C++] 유일한 사이클 (D4) (0) | 2020.09.16 |
|---|---|
| [SWEA 2007][C++] 패턴 마디의 길이(D2) (0) | 2020.09.16 |
| [SWEA 9088][C++] 다이아몬드 (D4) (0) | 2020.08.08 |
| [SWEA 8998][C++] 세운이는 내일 할거야(D4) (0) | 2020.08.08 |
| [SWEA 7088][C++] 은기의 송아지 세기(D4) (0) | 2020.08.01 |