728x90
반응형
🔶 stream
≣ 목차
/ 오늘의 TIL /
처음에는 먼저 시간 내에 문제를 빨리 푸는 게 목적이었고, stream 을 사용해서 리팩토링을 해보았다.
import java.util.*;
import java.util.stream.*;
public int[] solution(String[] name, int[] yearning, String[][] photo) {
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < name.length; i++) {
map.put(name[i], yearning[i]);
}
List<Integer> answer = new ArrayList<>();
for (int i = 0; i < photo.length; i++) {
int score = 0;
for (int j = 0; j < photo[i].length; j++) {
if (map.containsKey(photo[i][j])) {
score += map.get(photo[i][j]);
}
}
answer.add(score);
}
return answer.stream().mapToInt(Integer::intValue).toArray();
}
리팩토링
ide 환경 없이 코딩 테스트를 풀 수 있도록 준비하고 있는데... 꽤나 쉽지 않다 😅
- iter 를 통해 새로운 데이터를 만들 때 IntStream 을 이용해서 범위 구현하기
- boxed 로 객체 변환하고, collect 를 이용해서 Map 객체 만들기(Collectors.toMap())
- 2차원 배열일 때는 mapToInt 를 활용해서 stream 두 번 엮기
import java.util.*;
import java.util.stream.*;
class Solution {
public int[] solution(String[] name, int[] yearning, String[][] photo) {
Map<String, Integer> map = IntStream.range(0, name.length)
.boxed()
.collect(Collectors.toMap(i -> name[i], i -> yearning[i]));
return Arrays.stream(photo)
.mapToInt(p -> Arrays.stream(p)
.filter(map::containsKey)
.mapToInt(map::get)
.sum())
.toArray();
}
}
728x90
반응형
'Blog > TIL' 카테고리의 다른 글
[240907] 이진법 (0) | 2024.09.07 |
---|---|
[240906] 우선 순위 큐 (PriorityQueue) (0) | 2024.09.06 |
[240626] JS 문법 (0) | 2024.06.26 |
[240621] 동시성 테스트, BT (0) | 2024.06.21 |
[240620] ArgumentMatchers (0) | 2024.06.20 |
댓글