def solution(phone_book):
answer = True
hash_table={}
for p in phone_book:
hash_table[hash(p)]=p
for p in phone_book:
temp=''
for l in p:
temp+=l
if temp!=p and hash(temp) in hash_table:
return False
return answer
해시는 키값으로 조회하는거니깐~!~!
if문에서 temp를 해시해서 hash_table의 키값에 있는지 비교해준다
그리구 in {dictionary}
를 하면 자동으로 키값에서 검색을 해준다. 이전까지 계속 .keys()
를 사용했는데 그럴 필요가 없겠다
해시를 사용하지 않고 2번째 for문 만 사용해서
def solution(phone_book):
for p in phone_book:
temp=''
for l in p:
temp+=l
if temp!=p and temp in phone_book:
return False
return True
이렇게 해도 이중 for문보다 훨씬 빠르고 효율성도 반은 통과한다
def solution(clothes):
dic={}
for c in clothes:
if c[1] in dic:
dic[c[1]].append(c[0])
else:
dic[c[1]]=[c[0]]
for d in dic:
dic[d]=len(dic[d])
l=1
for d in dic.values():
l*=(d+1)
return l-1
[의상 이름, 의상 종류]
가 담긴 배열 clothes
에 대해서
의상종류를 키로 가지는 딕셔너리를 만들고,
그 밸류 값들의 길이 +1을 모두 곱해주면 모든 경우의 수가 계산되고,
어떤 의상도 입지 않는 경우는 없으므로 마지막에 1을 빼준다
def solution(clothes):
hm={}
for c in clothes:
hm[c[1]]=hm.get(c[1],0)+1
answer=1
for h in hm:
answer*=(hm[h]+1)
return answer-1
dic.get(key,0)
키값에 해당하는 값을 불러오고 없으면 0을 뱉는다
처음부터 len를 구해준 것과 같으므로 코드가 훨씬 간결하다
그런데 왜인지 더 느리다?