최대 1 분 소요

사용 언어: Python3

문제

스크린샷 2023-04-28 오전 10 45 49

풀이

이전에 풀었던 아나그램 문제를 딕셔너리를 풀지 않고 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')
  • 딕셔너리를 사용하지 않고 리스트를 이용해 알파벳 대소문자를 직접 해쉬하는 방법이다.
    • 이 방법도 알아두자!


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기