-
문제링크
코딩테스트 연습 / 연습문제 / Lv.1 / Python3 / 추억 점수 <- 클릭하면 문제로 이동합니다!
문제 설명
제한사항
입출력 예시 및 설명
풀이
def solution(name, yearning, photo): score_list = [] name_score_dict = {} score_sum = 0 # {name:score} dict로 만들기 for n, y in zip(name, yearning): name_score_dict[n] = y for p in photo: # photo 하나씩 돌기 for name in p: # p 돌기, name="may" if name in name_score_dict.keys(): # score가 있는 name일 때만 score를 추출하고 score를 계속 더해줌 # photo에는 name이 있는데 score가 없을 수도 있어서 넣어둔 코드 score = name_score_dict[name] # name을 key로 dict에서 score를 추출 score_sum += score # score_sum에 더해줌 else: # p에는 name이 있는데 score가 없는 name일 경우에는 아무 작업을 하지 않고 넘어감(pass) pass score_list.append(score_sum) # 나중에 return할 score_list에 score_sum(총합)을 추가해줌 score_sum = 0 # score_sum은 0으로 초기화. <- 다음 p에서도 score_sum을 해야하니까 초기화. return score_list
사람이름(name)과 그 사람에 대한 그리움점수(score)를 매칭시켜서 dict 형태로 만들기
photo(여러 사진)를 돌면서 p(그 사진에 있는 모든 사람 이름)을 추출
p를 돌면서 name(사진에 있는 사람 이름)을 하나씩 추출
dict에서 그 name에 매칭된 score를 추출
score를 계속 더해준다.
score list에 score를 추가해준다.
score를 0으로 초기화한다.
score list 반환
채점 결과
다른 사람 풀이
def solution(이름, 점수, 사진): return [sum(점수[이름.index(j)] for j in i if j in 이름) for i in 사진]
리얼 한 줄 장인...;
채점결과
dict형태로 푼 것과 삼항연산자로 푼 것과의 결과 비교를 해보자면, 삼항연산자로 푼 게 더 오래걸린다!
삼항연산자란?
참인경우 값 if 조건 else 거짓인경우 값
-> 한 줄로 표현이 가능하다.dict 로 짠 코드 삼항 연산자