Develop

[프로그래머스] 수열과 구간 쿼리3 본문

개인 공부/프로그래머스

[프로그래머스] 수열과 구간 쿼리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으로 구현가능한지 가능여부를 확인하는 눈도 길러야겠다