컴굥일지

[BOJ/백준 6996][C++] 애너그램 본문

알고리즘/코테 문제

[BOJ/백준 6996][C++] 애너그램

gyong 2022. 1. 24. 19:58
반응형

문제

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. 를 출력한다.

반응형
Comments