반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/176963
🐍파이썬
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를 통해 각 배열의 원소의 합을 구하면 답이 나온다.
반응형
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | 파이썬 / 자바스크립트] 게임 맵 최단거리(깊이/너비 우선 탐색(DFS/BFS)/level 2) (0) | 2023.04.10 |
---|---|
[프로그래머스 | 파이썬 / 자바스크립트] 타겟 넘버(깊이/너비 우선 탐색(DFS/BFS)/level 2) (0) | 2023.04.02 |
[프로그래머스 | 파이썬 / 자바스크립트] 스킬트리(Summer/Winter Coding(~2018) / level 2) (0) | 2023.04.02 |
[프로그래머스 | 파이썬 / 자바스크립트] 평행(코딩테스트 입문 / level 0) (0) | 2023.03.16 |
[프로그래머스 | 파이썬 / 자바스크립트] 다리를 지나는 트럭(스택/큐 / level 2) (0) | 2023.03.16 |
[프로그래머스 | 파이썬 / 자바스크립트] [3차] 파일명 정렬(2018 KAKAO BLIND RECRUITMENT / level 2) (0) | 2023.03.15 |