https://school.programmers.co.kr/learn/courses/30/lessons/176963
def solution(name, yearning, photo):
dict = {}
result = []
for i,j in zip(name, yearning):
dict[i]=j
for pic in photo:
sum = 0
for p in pic:
try:
sum+=dictionary[p]
except:
pass
result.append(sum)
return result
name과 yearning을 연결해 dictionary를 만들고 그를 이용해 for문을 돌며 추억 점수를 구해 result list에 append 해줬다.
굳이 try except문 안쓰고 if p in name
으로 확인했어도 된다.
그리고 여기서 dict를 다르게 구성하는 방법이 있다.
dictionary = dict(zip(name, yearning))
zip, 그리고 dictionary 함수를 이용하면 한줄로 dictionary를 구성할 수 있다.
아 그리고 1차 시도 코드에서 딕셔너리 변수명을 dict라고 해줬는데 코드가 실행되긴 했으나 dict 함수가 있으니 저렇게 사용하지 말자.
def solution(name, yearning, photo):
return [sum(yearning[name.index(i)] for i in pic if i in name) for pic in photo]
index를 제대로 사용한 코드다.
하지만 index 함수를 사용하기 때문에 O(N) (맞나??)의 시간 복잡도를 가짐
참고로 dictionary의 빅오는 O(1)이라고 한다.