출처 : 반크_반크 20년 백서
문제]
2013 HSPC 2번
두 단어 A와 B가 주어졌을 때, A에 속하는 알파벳의 순서를 바꾸어서 B를 만들 수 있다면, A와 B를 애너그램이라고 한다.
두 단어가 애너그램인지 아닌지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수(<100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 100을 넘지 않는 단어가 공백으로 구분되어서 주어진다. 단어는 알파벳 소문자로만 이루어져 있다.
출력
각 테스트 케이스마다 애너그램인지 아닌지를 예체 출력과 같은 형식으로 출력한다.
출력 형식
정확한 출력 형식은 제출에서 언어를 Java로 설정하면 확인할 수 있다.
예제 입력 1
3
blather reblath
maryland landam
bizarre brazier
예제 출력 1
blather & reblath are anagrams.
maryland & landam are NOT anagrams.
bizarre & brazier are anagrams.
출처 : 백준_6996번
참고풀이]
#include <stdio.h>
#include <string.h>
int main()
{
int T;//테스트 케이스 수 변수
int Acnt[26],Bcnt[26];
int i,j;
int chk;
scanf("%d",&T);
if(T>0 && T<100)
{
for(i=1;i<=T;i++)
{
char A[100]={'\0',};
char B[100]={'\0',};
for(j=0;j<26;j++) { Acnt[j]=0; Bcnt[j]=0;}
scanf("%s%s",A,B);
if(strlen(A)>=100 && strlen(B)>=100) break;
if(strlen(A) != strlen(B))
printf("%s & %s are NOT anagrams.\n",A,B);
else
{
for(j=0;j<strlen(A);j++) Acnt[A[j]-'a']++;
for(j=0;j<strlen(B);j++) Bcnt[B[j]-'a']++;
chk=1;
for(j=0;j<26;j++)
if(Acnt[j] != Bcnt[j])
{
chk=0; break;
}
if(chk)
printf("%s & %s are anagrams.\n",A,B);
else
printf("%s & %s are NOT anagrams.\n",A,B);
}
}
}
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 겨울
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 236제] NCP Nextop Lv.3 3대 측정 (0) | 2025.03.18 |
---|---|
C언어 235제] NCP Nextop Lv.3 UCPC는 무엇의 약자일까? (0) | 2025.03.17 |
C언어 234제] NCP Nextop Lv.3 포켓몬 GO (0) | 2025.03.12 |
C언어 233제] NCP Nextop Lv.2 동전 0 (0) | 2025.03.12 |
C언어 232제] 유리 구슬(Marbles) (0) | 2025.03.01 |
댓글