ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 추억 점수
    코딩테스트 연습 2023. 11. 9. 11:06

    문제링크

    코딩테스트 연습 / 연습문제 / 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 로 짠 코드

     

    삼항 연산자

     

    '코딩테스트 연습' 카테고리의 다른 글

    카드 뭉치  (0) 2023.11.15
    둘만의 암호  (0) 2023.11.14
    대충 만든 자판  (0) 2023.11.13
    달리기 경주  (2) 2023.11.08
    바탕화면 정리  (0) 2023.07.24
Designed by Tistory.