※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 6843번 문제인 Anagram Checker이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/6843
6843번: Anagram Checker
An anagram is a word or a phrase formed by rearranging the letters of another phrase such as “ITEM” and “TIME”. Anagrams may be several words long such as “CS AT WATERLOO” and “COOL AS WET ART”. Note that two phrases may be anagrams of each
www.acmicpc.net
모든 대문자 c에 대하여 (첫 phrase에 있는 c의 개수) - (두번째 phrase에 있는 c의 개수)가 0이라면 두 문자열은 anagram이고 그렇지 않으면 anagram이 아니라는 성질을 관찰하자.
위의 관찰을 이용해 위의 값을 저장할 배열을 하나 만들어 반복문을 이용해 문제를 해결하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using namespace std;
string s;
int cnt[128];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
getline(cin, s);
for (auto& l : s) cnt[l]++;
getline(cin, s);
for (auto& l : s) cnt[l]--;
for (char c = 'A'; c <= 'Z'; c++) {
if (cnt[c]) {
cout << "Is not an anagram.";
return 0;
}
}
cout << "Is an anagram.";
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 5292 // C++] Counting Swann's Coins (0) | 2022.12.22 |
---|---|
[BOJ 10190 // C++] Acronyms (0) | 2022.12.22 |
[BOJ 5344 // C++] GCD (0) | 2022.12.22 |
[BOJ 26590 // C++] Word Mix (0) | 2022.12.22 |
[BOJ 16911 // C++] 그래프와 쿼리 (0) | 2022.12.22 |