Part4.9_자료구조(스택,큐,해쉬,힙)_아나그램(딕셔너리 해쉬)__dict

Eugenius1st·2022년 1월 19일
0

Python_algorithm

목록 보기
25/83

내가 생각한 코드

import sys
sys.stdin = open("input.txt", "rt")
from collections import deque
# 딕셔너리 사용. index를 int로만 사용하는list와 다르게 
# index의 값으로 str, 단어 다 가능하다.

n = input()
m = input()
m = deque(m)
print(m)
for x in n:
    for _ in range(len(m)):
        if x== m[0]:
            m.popleft();
        else:
            m.append(m.popleft())
            print(m)
if len(m)==0:
    print("YES")
else:
    print("NO")


왜 80 일까 엉어엉엉 ㅠㅠㅠ 이유를 모르겠다 ㅠㅜㅠ

dict 내장함수

기존 값이 없어서, dict 내장함수를 사용해서 str1.get('A',0) 값이 없으면 0을 return한다는 것.

그래서 str[A] = str.get('A',0)+1 로 더해준다.

각 키 값에 value 를 넣어주었다. 내장함수 get을 활용해서!!!!

import sys
sys.stdin = open("input.txt", "rt")
# 딕셔너리 사용. index를 int로만 사용하는list와 다르게 
# index의 값으로 str, 단어 다 가능하다.

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(): # i라는 키값이 두개에 존재해야(이게 참이어야..) 아나그램이다 !! 이부분 이해하라!!
        if str[i] != str2[i]: #개수가 같은지 다른지 확인
            print("NO")
            break
    else:
        print("NO") #for문이 참이 아닌 경우
else:
    print("YES")

dict 방법 개선 코드

import sys
sys.stdin = open("input.txt", "rt")
# 딕셔너리 사용. index를 int로만 사용하는list와 다르게 
# index의 값으로 str, 단어 다 가능하다.

a = input()
b=input()

sH=dict() #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")
profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글