[백준 6843] Anagram Checker (C#, C++) - soo:bak
작성일 :
문제 링크
설명
대문자와 공백으로 이루어진 두 문장이 주어질 때, 공백을 무시하고 알파벳 빈도가 같으면 애너그램으로 판정하는 문제입니다.
접근법
알파벳 26개에 대한 빈도를 두 문장 각각 세어 배열을 비교합니다.
공백은 건너뛰고, 하나라도 다르면 “Is not an anagram.”, 모두 같으면 “Is an anagram.”을 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
class Program {
static void Main() {
var a = Console.ReadLine()!;
var b = Console.ReadLine()!;
var ca = new int[26];
var cb = new int[26];
foreach (var ch in a)
if (ch != ' ') ca[ch - 'A']++;
foreach (var ch in b)
if (ch != ' ') cb[ch - 'A']++;
bool same = true;
for (int i = 0; i < 26; i++) {
if (ca[i] != cb[i]) { same = false; break; }
}
Console.WriteLine(same ? "Is an anagram." : "Is not an anagram.");
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string a, b;
getline(cin, a);
getline(cin, b);
int ca[26] = {0}, cb[26] = {0};
for (char c : a) if (c != ' ') ca[c - 'A']++;
for (char c : b) if (c != ' ') cb[c - 'A']++;
bool same = true;
for (int i = 0; i < 26; i++) if (ca[i] != cb[i]) { same = false; break; }
cout << (same ? "Is an anagram." : "Is not an anagram.") << "\n";
return 0;
}