개인 공부/프로그래머스
[프로그래머스] 수열과 구간 쿼리3
개발 기록
2024. 1. 29. 12:49
문제
내풀이
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int one = 0;
// queries의 길이만큼 반복
for(int i=0; i < queries.length ;i++){
one = arr[queries[i][0]];
arr[queries[i][0]] = arr[queries[i][1]];
arr[queries[i][1]] = one;
}
return arr;
}
}
다른풀이
(*주의 return type이 문제에서 원하는 return type이랑 다름)
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public List<Integer> solution(int[] arr, int[][] queries) {
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
for (int[] query : queries) {
Collections.swap(list, query[0], query[1]);
}
return list;
}
}
느낀점
stream으로 코드를 짜려고 했으나...실패..
정확히는 stream으로 짜는 것이 더 코드가 길고 노가다성으로 원하는 값을 쭉 모은 다음 하나씩 가져와야 하므로
비효율적이라 판단하였다
그러고 다른 풀이를 보았더니 역시나 stream을 이용하여 작성한 코드는 없었다
앞으로는 stream으로 구현가능한지 가능여부를 확인하는 눈도 길러야겠다