문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/176963?language=java
import java.util.*;
class Solution {
public int[] solution(String[] name, int[] yearning, String[][] photo) {
int[] answer = new int[photo.length];
Map<String, Integer> map = new HashMap<>();
for (int i=0; i<name.length; i++){
String nameItem = name[i];
int point = yearning[i];
map.put(nameItem, point);
}
for (int i=0; i<photo.length; i++){
for (String item: photo[i]){
answer[i] += map.getOrDefault(item, 0);
}
}
return answer;
}
}
풀이
name에 해당하는 추억점수를 HashMap에 넣어주고 photo를 반복문을 사용하여 순차적으로 탐색하여 나온 name을 HashMap에서 꺼내 합산해 주고 배열에 넣어주면 된다. 또한 HashMap에 없는 name은 0 처리해주면 된다.
해설
첫번째 for 문 : 각 이름에 대한 yearnig값을 해시맵에 채움
두번째 for 문 : 각 사진의 이름들을 순회하여, 각 이름에 해당하는 yearning값을 찾아 'answer'배열의 해당 인덱스에 값을 더함. 만약 이름이 해시맵에 없다면 getOrDefault에 의해 0을 더함
'Algorithm > Java' 카테고리의 다른 글
[백준] 17266 어두운 굴다리 (1) | 2024.01.26 |
---|---|
[백준] 4963 섬의 개수 (0) | 2024.01.23 |
[백준] 25757 임스와 함께하는 미니게임 (1) | 2023.10.29 |
[백준] 4659 비밀번호 발음하기 (0) | 2023.10.28 |
[프로그래머스] 달리기 경주 (0) | 2023.10.25 |