[LeetCode/Python] 242. Valid Anagram

Evan Lee·2023년 7월 17일
0

코딩에 대한 이해력을 높이기 위한 작성된 글입니다.
여기의 내용은 @NeetCode 유튜버 동영상을 기반으로 작성되었으므로, 문제 발생 시 즉각적으로 삭제하도록 하겠습니다.

문제:

풀이:

일단은 Anagram이 무엇인지 파악하는 것이 중요할거 같습니다.
Anagram은 영어의 말장난으로서, 단어의 문자를 재배열하며 다른 뜻을 가지는 다른 단어로 바꾸는 것을 뜻하게 됩니다. 그렇다면 Example 1에서 나온 단어에 대해 파악해볼께요.

s = "anagram"
t = "nagaram"

첫번째로 파악해야 할 것은, 단어의 길이 입니다. 단어의 길이가 다르다면 바로 False를 Return 해야겠죠.

그후, dict 형태로 바꿔준다면, 아래와 같이 표현할 수 있을 것 입니다.

"a" 3개, "n" 1개, "g" 1개, "r" 1개, "m" 1개 (key:value 형태)

s와 t에 대해 비교하게 된다면, anagram인지 파악할 수 있을 것 입니다.

class Solution:
	def isAnagram(self, s:str, t:str) -> bool: 
    	if len(s) != len(t):
        	return False 
            
        countS, countT = {}, {} 
        for i in range(len(s)): -------------------> s와 t의 길이가 같으므로, 한가지 사용
        	countS[s[i]] = 1 + countS.get(s[i],0)
            countT[t[i]] = 1 + countT.get(t[i],0)
       return countS == countT

여기에서 get 함수를 사용하는 이유는, 초반에 만들었던 hashmap에 비교하고자 하는 key가 없다면 에러를 반환하기 때문에, get 함수를 통해 0 반환의 목적을 가지고 있습니다.

2개의 댓글

comment-user-thumbnail
2023년 7월 18일

유익한 글 잘 봤습니다, 감사합니다.

1개의 답글