본문 바로가기
ps/programmers

추억 점수

by choi-dev 2024. 2. 24.

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 사진]

문제의 배열 크기들이 전부 크지 않아서 사실 인덱스로 해결해도 솔은 되었을 것이다. 해당 소스코드들은 리스트 컴프리헨션 식으로 한 줄 코드를 작성했지만 논점은 한 줄 코드보다 인덱스로 해결했다는 부분이다. 아마 배열의 크기가 커졌으면 타임아웃이 발생했을 것이라 생각은 하는데 크기가 작을 경우에는 빠르게 해결할 수도 있겠다라는 생각을 했다.

'ps > programmers' 카테고리의 다른 글

대충 만든 자판  (0) 2024.02.25
덧칠하기  (0) 2024.02.25
바탕화면 정리  (0) 2024.02.25
공원 산책  (0) 2024.02.24
달리기 경주  (0) 2024.02.24