아나그램(딕셔너리 해쉬)

생성일: 2022년 1월 29일 오후 5:52

구현 코드

# 아나그램(구글)
import sys
sys.stdin = open("input.txt", "rt")
first = input()
second = input()
firstDic = {}
secondDic = {}

for x in first:
    if x in firstDic:
        firstDic[x] += 1
    else:
        firstDic[x] = 1
for x in second:
    if x in secondDic:
        secondDic[x] += 1
    else:
        secondDic[x] = 1

if firstDic == secondDic:
    print("YES")
else:
    print("NO")

모범 답안

import sys
sys.stdin=open("input.txt", "r")
a=input()
b=input()
str1=dict()
str2=dict()
for x in a:
    str1[x]=str1.get(x, 0)+1
for x in b:
    str2[x]=str2.get(x, 0)+1

for i in str1.keys():
    if i in str2.keys():
        if str1[i]!=str2[i]:
            print("NO")
            break
    else:
        print("NO")
        break
else:
    print("YES")

<개선된 코드>
import sys
#sys.stdin=open("in1.txt", "r")
a=input()
b=input()
sH=dict()
for x in a:
    sH[x]=sH.get(x, 0)+1
for x in b:
    sH[x]=sH.get(x, 0)-1

for x in a:
    if(sH.get(x)>0):
        print("NO")
        break;
else:
    print("YES")

차이점

  • 기본적인 로직은 같다.
  • 딕셔너리 안에 key값이 있는경우 value에 1을 더해주고 없는 경우에는 해당 key를 딕셔너리에 추가하고 value를 1 로 설정해주는 부분에서
    if x in firstDic:
        firstDic[x] += 1
    else:
        firstDic[x] = 1
    str1[x]=str1.get(x, 0)+1
    위의 두 코드는 같은 역할을 한다. (get()을 사용하여 1줄로 코드를 줄일 수 있다.)

좋은 웹페이지 즐겨찾기