Algorithm
[Java] ArrayList ์ ๋ ฌ, ArrayList → Array ๋ณํ / ๋๋์ด ๋จ์ด์ง๋ ์ซ์ ๋ฐฐ์ด
O'mil
2024. 5. 10. 12:12
728x90
๐ ๋งํฌ
๋๋์ด ๋จ์ด์ง๋ ์ซ์ ๋ฐฐ์ด
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ๋ฌธ์ ์ค๋ช
- array์ ๊ฐ element ์ค divisor๋ก ๋๋์ด ๋์ด์ง๋ ๊ฐ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋ฐฐ์ด์ ๋ฐํ
divisor๋ก ๋๋์ด ๋จ์ด์ง๋ element๊ฐ ํ๋๋ ์๋ค๋ฉด ๋ฐฐ์ด์ -1์ ๋ด์ ๋ฐํ
๐ ์์
โ๏ธ ํ์ด ์์
- divisor๋ก ๋๋์ด ๋จ์ด์ง๋ ์ ์ฐพ์ ArrayList์ ๋ฃ๊ธฐ
- ArrayList๊ฐ ๋น์๋ค๋ฉด -1 ์ถ๊ฐ
- ์ ๋ ฌ ํ ๋ฐํ
๐ป ์ฝ๋
import java.util.*;
class Solution {
public int[] solution(int[] arr, int divisor) {
List<Integer> answer = new ArrayList<>();
for (int i: arr) {
if (i % divisor == 0) {
answer.add(i);
}
}
if (answer.size() == 0) {
answer.add(-1);
}
Collections.sort(answer);
return answer.stream().mapToInt(Integer::intValue).toArray();
}
}
๐ก๋ฐฐ์ด ์
1. ArrayList ์ ๋ ฌ
- Collections.sort(๋ฆฌ์คํธ) // ์ค๋ฆ์ฐจ์
- Collections.sort(๋ฆฌ์คํธ, Collections.reverseOrder()) // ๋ด๋ฆผ์ฐจ์
- Collections.sort(๋ฆฌ์คํธ, String.CASE_INSENSITIVE_ORDER) //๋์๋ฌธ์ ๊ตฌ๋ถ์์ด ์ค๋ฆ์ฐจ์
- Collections.sort(๋ฆฌ์คํธ, Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER))
// ๋์๋ฌธ์ ๊ตฌ๋ถ์์ด ๋ด๋ฆผ์ฐจ์
2. ArrayList → Array ๋ณํ
- toArray
List<Integer> list = new ArrayList<>();
Object[] arr = list.toArray();
- Stream
List<Integer> list = new ArrayList<>();
int[] arr = list.stream() //Stream<Integer> ๋ฐํ
.mapToInt(Integer::intValue) //Integer์ intValue()๋ฅผ ์ฐธ์กฐํด์ int๋ก ์ธ๋ฐ์ฑ
.toArray(); //IntStream์ ์์๋ฅผ ๋ฐฐ์ด๋ก ๋ณํ
๐ ๋ค๋ฅธ ์ฌ๋์ ํ์ด
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int divisor) {
int[] answer = Arrays.stream(arr)
.filter(factor -> factor % divisor == 0) //๋๋์ด ๋จ์ด์ง๋ ๊ฒ๋ง ํํฐ๋ง
.sorted() // ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
.toArray(); //๋ฐฐ์ด๋ก ๋ณํ
if(answer.length == 0) answer = new int[] {-1};
return answer;
}
}
stream ๋งค๋ ฅ ์ฉ๋ค..
๊ทธ๋ ์ง๋ง ๋์ค์ ๋ค์ ํ๋ผ๊ณ ํด๋ ์ด๋ ๊ฒ ํ ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ๋ ํ ์ ์๊ตฌ๋. ํ๊ณ ๋๊ธด๋ค..
๐Reference
[Java] ArrayList ์ ๋ ฌํ๊ธฐ (์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์, ์ฌ์ฉ์ ์ ์)
728x90