비슷한 단어 - 2607
2025. 2. 12. 15:22ㆍPS/백준
문제
https://www.acmicpc.net/problem/2607
느낀점
상당히 애를 많이 먹었다.. 처음에는 set으로 비교하고 아닌 경우를 iterator로 찾으려고 했으나 그 경우, 문자의 순서가 달라질 수 있는 문제가 있어 다른 방법을 찾았다. 알파벳이 몇 개 있는지 판단하는 방법으로 풀었는데, 문제를 천천히 제대로 읽으면 방법을 유추할 수 있었다. 따라서, 구현 문제에서는 문제를 꼼꼼하게 잘 읽자!
풀이
#include <iostream>
#include <string>
#include <vector>
std::vector<int> calcIndex(std::string s)
{
std::vector<int> result(26, 0);
for (size_t i = 0; i < s.size(); i++)
{
result[s[i] - 'A']++;
}
return result;
}
int main()
{
int N, answer = 0;
std::cin >> N;
std::string reference;
std::cin >> reference;
std::vector<int> refInd = calcIndex(reference);
std::vector<int> difference;
for (int i = 0; i < N - 1; i++)
{
std::string str;
std::cin >> str;
// std::cout << "i: " << i << std::endl;
std::vector<int> compInd = calcIndex(str);
difference.clear();
for (int j = 0; j < 26; j++)
{
if (refInd[j] != compInd[j])
{
difference.push_back(refInd[j] - compInd[j]);
// std::cout << "j: " << j << "\n";
}
}
if (difference.empty())
{
answer++;
}
else if (difference.size() == 1 && abs(difference[0]) == 1)
{
answer++;
}
else if (difference.size() == 2 && abs(difference[0]) == 1 && difference[0] + difference[1] == 0)
{
answer++;
}
}
std::cout << answer;
return 0;
}
'PS > 백준' 카테고리의 다른 글
A->B - 16953 (0) | 2025.02.12 |
---|---|
팰린드롬 만들기 - 1254 (0) | 2025.02.12 |
오리 - 12933 (0) | 2025.02.12 |
앵무새 - 14713 (0) | 2025.02.12 |
222-풀링 - 17829 (0) | 2025.02.12 |