반응형
내 코드 (틀림)
import java.util.*;
class Solution {
public int[] solution(int n) {
List<Integer> list = new ArrayList<>();
int k = 2;
while(n != 1) {
if(n % k == 0) {
list.add(k);
n /= k;
} else {
k++;
}
}
int[] answer = new int[list.size()];
for(int i=0 ; i < list.size() ; i++) {
answer[i] = list.get(i);
}
Arrays.sort(answer);
return answer;
}
}
11번째 줄 list.add(k);
를 어디 위치에 써야하는지 조금 갈팡질팡하긴 했다...
그래서 다른 코드들 보고 여차저차 작성하긴 했다만...
answer 배열에서 중복값 제거가 필요했다...
근데 뭔가 자꾸 코드가 길어지는 거 같고..
구글링해도 원하는 결과가 잘 안나오길래 결국 마지막 줄만 더 참고하기로 했다..ㅠ
import java.util.*;
class Solution {
public int[] solution(int n) {
int[] answer = {};
List<Integer> list = new ArrayList<>();
int k = 2;
while(n != 1) {
if(n % k == 0) {
list.add(k);
n /= k;
} else {
k++;
}
}
answer = list.stream().distinct().mapToInt(Integer::intValue).toArray();
return answer;
}
}
19번째 줄...악.. 스트림 이용해야...
✔ .stream()
: 스트림 객체 생성
✔ .distinct()
: 스트림에서 중복값 제거
✔ .mapToInt(Integer::intValue)
: .maptoInt(i -> i)
로 써도 된다. map은 기존의 데이터에서 특정 형태로 수정해 적용한다는 의미! 인데 IntStream으로 바꿔주는 메소드!
✔ .toArray()
: 리스트를 배열로 만듦
Stream API 함수를 더 공부해야겄다 (filter, map, limit, collect 등)
(참고)
✔ 스트림 사용법
✔ 스트림 중간 연산자 (.distinct() 등)
(다들 깔끔하게 해주셨지만 개인적으로는 이게 정리가 가장 깔끔하신..👍👍)
✔ .toArray()
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 0] 유한소수 판별하기 (0) | 2023.02.13 |
---|---|
[프로그래머스/Lv. 0] 다항식 더하기 (0) | 2023.02.13 |
[프로그래머스/Lv. 0] 캐릭터의 좌표 (0) | 2023.02.11 |
[프로그래머스/Lv. 0] 다음에 올 숫자 (0) | 2023.02.09 |
[프로그래머스/Lv. 0] 숨어있는 숫자의 덧셈 (2) (0) | 2023.02.09 |