본문 바로가기
Problem Solving/프로그래머스

[프로그래머스 | 파이썬 / 자바스크립트] 추억 점수(연습문제 / level 1)

by 청량리 물냉면 2023. 3. 31.
반응형
문제

https://school.programmers.co.kr/learn/courses/30/lessons/176963 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

🐍파이썬
def solution(name, yearning, photo):
    answer = []
    dic = {name:yearning for name, yearning in zip(name, yearning)}
    for i in range(len(photo)):
        answer.append(0)
        for j in photo[i]:
            if j in dic.keys():
                answer[i] += dic[j]
    return answer

1️⃣ name: yearning 으로 이루어진 dictionary를 생성

2️⃣ photo의 이차원 배열을 돌며 배열 내 원소가 name에 포함되어 있을 시 name에 해당하는 yearning 점수를 더한다.

 

 

🐥자바스크립트
function solution(name, yearning, photo) {
    var answer = [];
    let dic = {}
    for(let i = 0; i < name.length; i++){
        dic[name[i]] = yearning[i];
    }
    for(let i = 0; i < photo.length; i++){
        answer.push(0);
        for(let j of photo[i]){
            if(name.includes(j)){
                answer[i] += dic[j];
            }
        }
    }
    return answer;
}

1️⃣ name: yearning 으로 이루어진 dictionary를 생성

2️⃣ photo의 이차원 배열을 돌며 배열 내 원소가 name에 포함되어 있을 시 name에 해당하는 yearning 점수를 더한다.

 

 

다른 풀이 방법

function solution(name, yearning, photo) {
    let obj = {};
    for(let i = 0; i < name.length; i++){
        obj[name[i]] = yearning[i];
    }
    return photo.map(value => value.map(v => obj[v] ? obj[v] : 0).reduce((acc,cur) => acc + cur,0))
}

name 👉 ["may", "kein", "kain", "radi"]

yearning 👉 [5, 10, 1, 3]

photo 👉 [["may", "kein", "kain", "radi"], ["may", "kein", "brin", "deny"], ["kon", "kain", "may", "coni"]]

일때, 

console.log(photo.map(value => value.map(v => obj[v] ? obj[v] : 0)));
// 	[ [ 5, 10, 1, 3 ], [ 5, 10, 0, 0 ], [ 0, 1, 5, 0 ] ]

reduce를 통해 각 배열의 원소의 합을 구하면 답이 나온다.

반응형