アナック


作成日: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")

差異

  • の基本論理は同じである.
  • ディレクトリにキー値がある場合はvalueに1を加え、ない場合はそのキー値をディレクトリに追加し、valueを1に設定する部分では、
    if x in firstDic:
        firstDic[x] += 1
    else:
        firstDic[x] = 1
    str1[x]=str1.get(x, 0)+1
    の前の2つのコードが同じ役割を果たします.(get()を使用して、コードを1行に減らすことができます.)