https://school.programmers.co.kr/learn/courses/30/lessons/176963
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 코드
# 추억 점수
# 프로그래머스 https://school.programmers.co.kr/learn/courses/30/lessons/176963
def solution(name, yearning, photo):
""" 문제 분석
photo 배열의 크기가 100까지이므로 n^2 시간 복잡도가 발생해도 타임아웃 x
1. name 배열에 해당하는 추억 점수를 yearning 배열에서 가져와 딕셔너리로 생성
2. photo 배열을 반복문을 통해 value 값을 가져와 배열에 append
"""
answer = []
memory_score = dict()
for i in range(len(name)):
memory_score[name[i]] = yearning[i]
for array in photo:
cnt = 0
for i in range(len(array)):
if array[i] in memory_score:
cnt += memory_score[array[i]]
else:
cnt += 0
answer.append(cnt)
return answer
print(solution(["may", "kein", "kain", "radi"], [5, 10, 1, 3], [["may", "kein", "kain", "radi"],["may", "kein", "brin", "deny"], ["kon", "kain", "may", "coni"]]))
자바로 풀이할 때도 쉽게 풀었던 부분이라 어렵지 않았다.
상대 코드
def solution(이름, 점수, 사진):
return [sum(점수[이름.index(j)] for j in i if j in 이름) for i in 사진]
문제의 배열 크기들이 전부 크지 않아서 사실 인덱스로 해결해도 솔은 되었을 것이다. 해당 소스코드들은 리스트 컴프리헨션 식으로 한 줄 코드를 작성했지만 논점은 한 줄 코드보다 인덱스로 해결했다는 부분이다. 아마 배열의 크기가 커졌으면 타임아웃이 발생했을 것이라 생각은 하는데 크기가 작을 경우에는 빠르게 해결할 수도 있겠다라는 생각을 했다.