알고리즘 문제풀이

애너그램(백준 6996)

wiojfe 2024. 3. 17. 17:06

https://www.acmicpc.net/problem/6996

 

6996번: 애너그램

첫째 줄에 테스트 케이스의 개수(<100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 100을 넘지 않는 단어가 공백으로 구분되어서 주어진다. 단어는 알파벳 소문자로만 이루어

www.acmicpc.net

문자열 순서를 바꿔 동일하게 만들 수 있으면 되니 2개의 문자열을 정렬해서 확인하면 된다. 

n = int(input())
for i in range(n):
    # 입력 받은 문자열의 원본을 저장
    original_a, original_b = map(str, input().split())
    # 문자열을 리스트로 변환하여 정렬하기 위해 복사
    a = list(original_a)
    b = list(original_b)
    # 정렬
    a.sort()
    b.sort()

    if len(a) != len(b):
        print(f"{original_a} & {original_b} are NOT anagrams.")
    else:
        issame = 1  # 아나그램인지 확인하는 플래그 변수
        for j in range(len(a)):
            if a[j] != b[j]:
                issame = 0
                print(f"{original_a} & {original_b} are NOT anagrams.")
                break
        # 모든 조건을 통과했을 때만 아나그램으로 판별
        if issame:
            print(f"{original_a} & {original_b} are anagrams.")