ANAGRAM 문제 질문드립니다.

  • Jaguar06
    Jaguar06

    ANAGRAM
    알고리즘은 성능을 크게 생각하지 않고 간단하게 짰습니다.
    1. 알파벳으로 되어있는지 검사
    2. 같은 스트링일 경우 No
    3. 길이가 다를 경우 No
    4. 무식한 방법이지만 문자열의 길이만큼 루프를 돌며 각 인덱스에 해당하는 문자의 개수가 양쪽 문자열에서 같은지 매번 확인합니다. 아니라면 No를 반환합니다.
    5.여기까지 거치면 적합하다고 판단하여 Yes를 반환합니다.

    테스트 케이스를 여러개 돌리면서, 대소문자가 다를 경우(이를테면 Anagrams와 anagramS 혹은 Anagrams와 Smargana, 둘 다 No여야겠죠) 와 길이별 테스트 등 여러가지를 했는데 어느 부분이 잘못된 것인지 잘 알 수 없었습니다.

    import sys
    
    def isAnagram(str1, str2):
        if not str1.isalpha() or not str2.isalpha():
            return "No."
        if str1 == str2:
            return "No."
        if len(str1) != len(str2):
            return "No."
        for index in range(len(str1)):
            if str1.count(str1[index]) != str2.count(str1[index]):
                return "No."
        return "Yes"
    
    rl = lambda: sys.stdin.readline()
    n = int(rl())
    
    for index in range(n):
        parse = rl().split()
        print isAnagram(parse[0].strip(), parse[1].strip())
    

    제가 놓친 부분이 있는지 확인해주시면 감사하겠습니다.


    4년 전
3개의 댓글이 있습니다.
  • Taeyoon_Lee
    Taeyoon_Lee

    숫자도 들어올 수 있는데, 숫자면 무조건 No.라는 말은 없어 보입니다.


    4년 전 link
  • Taeyoon_Lee
    Taeyoon_Lee

    질문 내용과는 별개로 매우 모범적인 질문글이라 "질문글 올리기 튜토리얼"로 등록하고 싶을 정도군요. :)


    4년 전 link
  • Jaguar06
    Jaguar06

    아...그렇네요 특수문자 막으면서 알파벳만 된다고 생각했었는데 새벽에 봐서 잘못봤었나 보네요 ㅋㅋ 말씀하신대로 바꿔서 정답확인 했습니다. 감사합니다.
    질문글 올릴 때 글쓰기 양식이 미리 잘 작성되어 있던데요, 좋게 봐주시니 감사하네요 :P


    4년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.