[김태원 알고리즘] 아나그램 (리스트 해쉬)
사용 언어: Python3
문제
풀이
이전에 풀었던 아나그램 문제를 딕셔너리를 풀지 않고 C++ 처럼 리스트를 이용해 해결한 풀이이다.
def hashing(word, lst):
for x in word:
if x.isupper(): # ✅ 대문자라면
# A를 0번 인덱스부터 해싱하기 위해 # A(=65) ~ Z(90) / a(=97) ~ z(=122)
lst[ord(x)-ord('A')] += 1 # ord(): ✅ 문자를 아스키넘버로 변환
else: # 소문자라면
lst[ord(x)-ord('a')] += 1
w1, w2 = input(), input()
lst1, lst2 = [0]*52, [0]*52 # ✅ 대문자(26) + 소문자(26) = 52
hashing(w1, lst1)
hashing(w2, lst2)
for i in range(len(lst1)):
if lst1[i] != lst2[i]:
print('NO')
break
else:
print('YES')
# 아래처럼 해도 되는데 C++ 처럼 하기 위해 위 방법
# if lst1 == lst2:
# print('YES')
# else:
# print('NO')
- 딕셔너리를 사용하지 않고 리스트를 이용해 알파벳 대소문자를 직접 해쉬하는 방법이다.
- 이 방법도 알아두자!
💛 개인 공부 기록용 블로그입니다. 👻