컴굥일지
[BOJ/백준 6996][C++] 애너그램 본문
반응형
문제
https://www.acmicpc.net/problem/6996
문제 내용
테스트 케이스별로 단어 2개를 입력받아서 애너그램인지 아닌지를 판단하는 문제이다.
문제 풀이
애너그램이란 단어 2개가 주어졌을 때, 두 단어를 이루고 있는 알파벳이 같은 것을 의미한다.
즉, 순서를 바꿔서 동일해지면 애너그램이다.
이 문제는 sort() 함수를 통해 정말 간단하게 해결할 수 있다.
입력받은 문자열 2개를 모두 정렬하고, 그 뒤에 같은지 비교하면 된다.
코드
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
//입력
int test;
cin >> test;
for (int i = 0; i < test; i++) {
string a1, a2,tmp1,tmp2;
cin >> a1 >> a2;
tmp1 = a1, tmp2 = a2;
//문제 해결
sort(a1.begin(), a1.end());
sort(a2.begin(), a2.end());
//결과 출력
if (a1 == a2) cout << tmp1 << " & " << tmp2 << " are anagrams.\n";
else cout << tmp1 << " & " << tmp2 << " are NOT anagrams.\n";
}
}
문제 코드 설명
1) 입력
테스트 케이스 테스트 케이스 개수를 입력받고, 그만큼 for문을 돌며 테스트 케이스별로 2개의 단어를 입력받는다.
2) 문제 해결
sort() 함수를 사용하여 입력받은 단어를 정렬한다.
3) 결과 출력
출력 형식에 맞추어 출력한다.
두 단어가 애너그램이면 ~~~ & ~~~ are anagrams. 를 출력하고, 애너그램이 아니라면 ~~~ & ~~~ are NOT anagrams. 를 출력한다.
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 11047][C++] 동전 0 (0) | 2022.01.26 |
---|---|
[BOJ/백준 2231][C++] 분해합 (0) | 2022.01.25 |
[BOJ/백준 8892][C++] 팰린드롬 (0) | 2022.01.21 |
[BOJ/백준 11091][C++] 알파벳 전부 쓰기 (0) | 2022.01.21 |
[BOJ/백준 15904][C++] UCPC는 무엇의 약자일까? (0) | 2022.01.19 |
Comments