1. 문제
- 이름이 들어있는 배열 name과 각 이름별로 점수를 매기는 배열 yearning이 있다. 2차원 배열 photo의 각 요소(1차원배열)가 포함하는 이름에 맞는 점수를 더해 반환하라.
)
2. 의사코드
1. Hash와 반복문을 사용해 이름을 Key값, 점수를 Value값으로 삽입
HashMap<String, Integer> map = new HashMap<>();
for(int i=0; i<name.length; i++) {
map.put(name[i], yearning[i]);
}
2. photo의 이름이 map의 Key값에 있다면 그에맞는 value를 sum에 더해 반환
3. 시도
import java.util.HashMap;
class Solution {
public int[] solution(String[] name, int[] yearning, String[][] photo) {
HashMap<String, Integer> map = new HashMap<>();
int[] answer = new int[photo.length];
for(int i=0; i<name.length; i++) {
map.put(name[i], yearning[i]);
}
for(int i=0; i<photo.length; i++) {
int sum = 0;
for(int j=0; j<photo[i].length; j++) {
String value = photo[i][j];
if(map.containsKey(value)) {
sum += map.get(value);
}
}
answer[i] = sum;
}
return answer;
}
}
결과가 담길 answer 배열에 photo.length를 사용하여 필요할 공간만을 생성했다.
2차원 배열 photo의 각 요소별로 길이가 같아 가능한 코드이고 만약, 2차원배열의 요소별로 길이가 다르다면 다른 방법이 필요할 것으로 예상된다.
아래 코드는 list에 sum을 넣고 최종 return에서 배열로 변경한 코드이다.
새로운 list를 만들어 값을 넣고 배열로 변경하는 과정이 추가되어 시간적으로는 효율이 떨어진 것을 확인할 수 있다.
import java.util.HashMap;
import java.util.ArrayList;
class Solution {
public int[] solution(String[] name, int[] yearning, String[][] photo) {
ArrayList<Integer> lists = new ArrayList();
HashMap<String, Integer> map = new HashMap<>();
for(int i=0; i<name.length; i++) {
map.put(name[i], yearning[i]);
}
for(int i=0; i<photo.length; i++) {
int sum = 0;
for(int j=0; j<photo[i].length; j++) {
String value = photo[i][j];
if(map.containsKey(value)) {
sum += map.get(value);
}
}
lists.add(sum);
}
int[] result = lists.stream().mapToInt(i -> i).toArray();
return result;
}
}
lists.stream().mapToInt(i -> i)
-> lists의 Integer 타입인 각 요소를 int 타입으로 매핑
toArray()
모든 요소를 int[] 배열로 변경.
'자바 알고리즘' 카테고리의 다른 글
[프로그래머스 - Java/Stack] 짝지어 제거하기 (0) | 2023.10.13 |
---|---|
[leetCode - Java/Hash] 819. Most Common Word (0) | 2023.09.29 |
[leetCode - Java/Two Pointer] 344. Reverse String (0) | 2023.09.27 |
[leetcode - Java / DFS] 133. Clone Graph (0) | 2023.09.15 |
[leetCode - Trie / Java] 208. Implement Trie (Prefix Tree) (0) | 2023.09.12 |