1 분 소요

사용 언어: Python3

문제

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

풀이

내 풀이

w1, w2 = input(), input()

# ✅ 딕셔너리 초기화
dic1 = {x:0 for x in w1}
dic2 = {x:0 for x in w2}

for x in w1:
    dic1[x] += 1
for x in w2:
    dic2[x] += 1

if sorted(dic1.items()) == sorted(dic2.items()):
    print('YES')
else:
    print('NO')
  • dic1을 이용해 첫 번째 단어를 구성하는 알파벳의 수를 카운트 한다.
  • dic2를 이용해 두 번째 단어를 구성하는 알파벳의 수를 카운트 한다.
  • dic1dic2를 정렬한 뒤 같으면 YES, 다르면 NO 출력

다른 풀이

딕셔너리 초기화 하는 부분을 수정하고 get() 함수를 통해 키가 없을 때 default 값을 지정했다.

w1, w2 = input(), input()

# 딕셔너리 초기화
dic1, dic2 = dict(), dict()

for x in w1:
    dic1[x] = dic1.get(x,0) + 1 # ✅ x라는 키가 없으면 0으로 default값 지정
for x in w2:
    dic2[x] = dic2.get(x,0) + 1 

if sorted(dic1.items()) == sorted(dic2.items()):
    print('YES')
else:
    print('NO')

다른 풀이

w1, w2 = input(), input()

dic = dict()
for x in w1: # ✅ 카운트
    dic[x] = dic.get(x,0) + 1 
for x in w2: # ✅ 원상복귀
    dic[x] = dic.get(x,0) - 1

if all(x == 0 for x in dic.values()):
    print('YES')
else:
    print('NO')
  • 딕셔너리를 하나만 사용하는 방법이다.
  • w1을 순회하며 dic을 이용해 카운트 하고, 이어서 w2를 순회하며 dic을 원상복귀 시킨다.
  • w1w2의 순회를 모두 마쳤을 때 dic의 value들은 모두 0이어야 아나그램이다.


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

맨 위로 이동하기