https://school.programmers.co.kr/learn/courses/30/lessons/176963
1.HashMap을 이용해서 풀기
2.삼중 for문을 이용해서 풀기
1.
import java.util.*;
class Solution {
public int[] solution(String[] name, int[] yearning, String[][] photo) {
int[] answer = new int[photo.length];
HashMap<String, Integer> hm = new HashMap<String, Integer>();
for(int i=0;i<name.length;i++) {
hm.put(name[i], yearning[i]);
}
for(int i=0;i<photo.length;i++) {
for(int j=0;j<photo[i].length;j++) {
if(hm.get(photo[i][j]) != null) answer[i] += hm.get(photo[i][j]);
}
}
return answer;
}
}
- name 크기 만큼 for문을 돌면서 hashmap안에 넣기
- 이중 for문 만큼 돌면서 null이 아닐 때, hashmap에 있는 것을 answer 배열에 넣기
- answer[i] += hm.get(photo[i][j]) 대신에 getOrDefault를 사용해서 가능!
- answer[i] += hm.getOrDefault(photo[i][j], 0);
2. 다른 사람 풀이 (삼중 for문)
class Solution {
public int[] solution(String[] name, int[] yearning, String[][] photo) {
int[] answer = new int[photo.length];
for(int i = 0; i < photo.length; i++){
for(int j = 0; j < photo[i].length; j++){
for(int k = 0; k < name.length; k++){
if(photo[i][j].equals(name[k])) answer[i] += yearning[k];
}
}
}
return answer;
}
}
- hashmap을 쓰는 게 훨씬 빠르긴 하다.
- hashmap을 언제 쓸 때 빠를지 조금씩 감이 오는 것 같다.
'algorithm > Programmers' 카테고리의 다른 글
[JAVA] H-index (0) | 2023.04.04 |
---|---|
[JAVA] 가장 큰 수 (0) | 2023.04.04 |
[JAVA] K번째 수 (0) | 2023.03.31 |
[JAVA] 올바른 괄호 (0) | 2023.03.31 |
[JAVA] 기능 개발 (0) | 2023.03.30 |