해결된 질문
작성
·
178
0
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")
개선된 코드를 쓰면 아래 반복문이 a문자열인 key값만 돌아서 만약 b가 a를 완전히 포함하고 a에 없는 문자가 포함되어있을 시 출력이 YES가 됩니다 실제 YES가 출력되는 입력예제인 AbaAeCe baeeACA 에서 뒤의 문자열에 fff만 붙여서 해봣더니 역시 NO가 아니라 Yes가 출력됩니다. 제가 생각한게 맞을까요?
그리고 저는 아래코드처럼 강사님 수정전 코드에서 딕셔너리를 단순 == 연산으로 비교했는데 이렇게 구현하는거는 문제의 취지에서 벗어난 정답인가요?
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
if str1 == str2:
print("YES")
else:
print("NO")
답변 1
0
안녕하세요^^
문제를 읽어보면 "길이가 같은 두 개의 단어가 주어지면"
라고 되어 있습니다. 단어의 길이가 같다라는 전제조건이 있습니다.
==으로 해도 상관없습니다. 저도 처음에는 ==으로 했는데 너무 없어 보여서 영상을 바꾼겁니다. 파이썬은 두 딕셔너리를 ==으로 비교해도 됩니다.
만약 다른 길이가 주어진다면 아래와 같이 해도 좋습니다.
if len(a)!=len(b) print("NO")
else:
아나그램 검사
아 제가 문제를 제대로 안읽었네요 답변 달아주셔서 감사합니다:D