https://school.programmers.co.kr/learn/courses/30/lessons/176963
๐ ํ์ด 3 : Map + Stream
`Stream.mapToInt()` ๋ฉ์๋ ์ด์ฉ
import java.util.*;
class Solution {
// ๊ทธ๋ฆฌ์ํ๋ ์ฌ๋์ ์ด๋ฆ, ๊ทธ๋ฆฌ์ ์ ์, ์ฌ์ง ์ ์ด๋ฆ์ด ์ฃผ์ด์ง ๋, ์ฌ์ง ์ถ์ต ์ ์ ๋ฐํ
public int[] solution(String[] name, int[] yearning, String[][] photo) {
// ์ด๋ฆ๊ณผ ๊ทธ๋ฆฌ์ ์ ์๋ฅผ ๋งคํํ์ฌ Map ์์ฑ
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < name.length; i++) map.put(name[i], yearning[i]);
// ์ฌ์ง ๋ฐฐ์ด์ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ์ฌ ๊ฐ ์ฌ์ง์ ๊ทธ๋ฆฌ์ ์ ์ ๊ณ์ฐ
return Arrays.stream(photo)
.mapToInt(nameArr -> Arrays.stream(nameArr) // ๊ฐ ์ฌ์ง ์ ์ด๋ฆ ๋ฐฐ์ด์ ์คํธ๋ฆผ์ผ๋ก ๋ณํ
.mapToInt(nameInPhoto -> map.getOrDefault(nameInPhoto, 0)) // map์ ํตํด ์ฌ์ง ์ ์ด๋ฆ์ ๊ทธ๋ฆฌ์ ์ ์๋ก ์นํ(๊ธฐ๋ณธ๊ฐ 0)
.sum()) // ์ ์ ํฉ์ฐ(์ฌ์ง ์ถ์ต ์ ์)
.toArray();
}
}
๐ ํ์ด 2 : Map.getOrDefault()
์ด๋ฆ๊ณผ ๊ทธ๋ฆฌ์ ์ ์๋ฅผ ๋งคํํ์ฌ `Map`์ ์์ฑํ๊ณ ๋ฐ๋ณต๋ฌธ์์ `getOrDefault()` ๋ฉ์๋๋ก ์ ๊ทผ(๊ธฐ๋ณธ๊ฐ ์ง์ )
import java.util.*;
class Solution {
// ๊ทธ๋ฆฌ์ํ๋ ์ฌ๋์ ์ด๋ฆ, ๊ทธ๋ฆฌ์ ์ ์, ์ฌ์ง ์ ์ด๋ฆ์ด ์ฃผ์ด์ง ๋, ์ฌ์ง ์ถ์ต ์ ์ ๋ฐํ
public int[] solution(String[] name, int[] yearning, String[][] photo) {
// ์ด๋ฆ๊ณผ ๊ทธ๋ฆฌ์ ์ ์๋ฅผ ๋งคํํ์ฌ Map ์์ฑ
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < name.length; i++) map.put(name[i], yearning[i]);
int[] scoreArr = new int[photo.length];
for (int i = 0; i < photo.length; i++) { // ์ฌ์ง ๊ฐ์๋งํผ ๋ฐ๋ณต
for (int j = 0; j < photo[i].length; j++) { // ํด๋น ์ฌ์ง ์ ์ฌ๋ ์๋งํผ ๋ฐ๋ณต
scoreArr[i] += map.getOrDefault(photo[i][j], 0); // ํด๋น ์ ์ ๋์ (๊ธฐ๋ณธ๊ฐ 0)
}
}
return scoreArr;
}
}
๐ ํ์ด 1 : List.indexOf()
์ด๋ฆ ๋ฐฐ์ด์ `List`๋ก ๋ณํํ์ฌ `indexof()` ๋ฉ์๋ ์ฌ์ฉโญ
import java.util.*;
class Solution {
// ๊ทธ๋ฆฌ์ํ๋ ์ฌ๋์ ์ด๋ฆ, ๊ทธ๋ฆฌ์ ์ ์, ์ฌ์ง ์ ์ด๋ฆ์ด ์ฃผ์ด์ง ๋, ์ฌ์ง ์ถ์ต ์ ์ ๋ฐํ
public int[] solution(String[] name, int[] yearning, String[][] photo) {
// indexof()๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ด๋ฆ ๋ฐฐ์ด์ List๋ก ๋ณํ
List<String> nameList = Arrays.asList(name);
int[] scoreArr = new int[photo.length];
for (int i = 0; i < photo.length; i++) { // ์ฌ์ง ๊ฐ์๋งํผ ๋ฐ๋ณต
for (int j = 0; j < photo[i].length; j++) { // ํด๋น ์ฌ์ง ์ ์ฌ๋ ์๋งํผ ๋ฐ๋ณต
int idx = nameList.indexOf(photo[i][j]); // ์ฌ์ง ์ ์ธ๋ฌผ์ ์ด๋ฆ์ ์ฃผ์ด์ง ์ด๋ฆ ๋ฐฐ์ด์์ ์ฐพ๊ธฐ
scoreArr[i] += idx > -1 ? yearning[idx] : 0; // ๊ทธ๋ฆฌ์ ์ ์๊ฐ ์๋ ์ธ๋ฌผ์ด๋ผ๋ฉด ํด๋น ์ ์ ๋์
}
}
return scoreArr;
}
}
'๐ท์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ํฐ์ผ๋ชฌ(Stream.distinct()) (0) | 2024.08.17 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์นด๋ ๋ญ์น(LinkedList(Queue)) (0) | 2024.08.17 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ๋ช ์์ ์ ๋น (1)(PriorityQueue) (0) | 2024.08.17 |
[ํ๋ก๊ทธ๋๋จธ์ค/Java] ์ฝ๋ผ ๋ฌธ์ (์ด ๊ตํ ํ์ (n - b) / (a - b)) (0) | 2024.08.17 |