-
[자바(JAVA)] 수열과 구간 쿼리 3 / ArrayList<>(), Collections.swap()프로그래머스/자바(JAVA) 2023. 8. 15. 16:42728x90
https://school.programmers.co.kr/learn/courses/30/lessons/181924
✅ 내 풀이
import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Solution { public int[] solution(int[] arr, int[][] queries) { ArrayList<Integer> transArr = new ArrayList<>(); for(int a: arr){ transArr.add(a); } for(int[] q:queries){ int i = q[0]; int j = q[1]; int temp = transArr.get(i); transArr.set(i, transArr.get(j)); transArr.set(j, temp); } int[] answer = transArr.stream().mapToInt(Integer::intValue).toArray(); return answer; } }
<코드 구상 이유>
1. int[]는 불변성이라 가변이 가능한 ArrayList로 변환했다.
2. 인덱스의 값을 서로 변경하기 위해 temp를 사용했다.
3. 문제의 반환값인 int[]를 위해 stream으로 변환 후 return 했다.
✅ 다른풀이 1
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]); //Collections.swqp(변경배열, 바꾸는 위치1, 바꾸는 위치2); } return list; } }
.boxed로 박싱을 좀 더 편하게 진행했고
Collections.swap()으로 요소의 교환을 더 쉽게 진행한것 같다.
다만 문제의 요구사항인 int[] 반환형태를 아예 고친거라 추가적으로 int[]로 변환하면 완벽할 것 같다.
728x90'프로그래머스 > 자바(JAVA)' 카테고리의 다른 글
[자바(JAVA)] 정수 내림차순으로 배치하기. PriorityQueue<Long> (0) 2023.08.18 [자바(JAVA)] 문자열 뒤집기, StringBuilder, setCharAt(index, newChar) (0) 2023.08.16 [자바(JAVA)] 피자 나눠먹기(1) / Math.ceil() 로 올림처리 하기 (0) 2023.08.03 [자바(JAVA)] 홀짝에 따라 다른 값 반환하기 / IntStream.rangeClosed (0) 2023.07.02 [자바(JAVA)] 문자 리스트를 문자열로 변환하기 / stream, .collect, Collector.joinning(), String.join (0) 2023.07.01