CodeJB 2021. 6. 18. 21:33

#include <iostream>
#include <stdio.h>

int main() {
    char A[],B[];
    char str[100];
    int i;
    
    scanf("%s",&str);
    for(int i = 0; A[i] != '\0'; i++){
        if(str[i] >= 65 && str[i] <= 90){//소문자
            A[str[i] - 64]++; //해당 index에 count한다.
        }
        else if(str[i] >= 97 && str[i] <= 122){
            A[str[i] - 70]++; //해당 index에 count한다.
        }
    }
    
    scanf("%s",&str);
    for(int i = 0; B[i] != '\0'; i++){
        if(str[i] >= 65 && str[i] <= 90){//소문자
            B[str[i] - 64]++; //해당 index에 count한다.
        }
        else if(str[i] >= 97 && str[i] <= 122){
            B[str[i] - 70]++; //해당 index에 count한다.
        }
    }
    
    for(i =0; i<= 52; i++){
        if(A[i] != B[i]){
            printf("NO\n");
            exit(0);
        }
    }
    printf("Yes\n");
    return 0;
}

성찰

  • 이전에도 JAVA로 아나그램 문제를 해결한 적이 있었는데, Sort를 사용하지 않고 아스키코드를 이용하여 근본적인 해결방안으로 해결하였다.
  • 대소문자 구분이 가능하고 속도도 빨라서 가장 좋은 해결방안이라고 생각한다.
  • 무조건 A와 B에 입력하여 해결하려고 했었는데, str이라는 임의 배열에 입력하여 결과값을 A[],B[]에 대입하여 해결하는 방안이 굉장히 인상깊다.