📘요구 사항 정리
- 정수가 들어있는 배열 num_list가 매개변수로 주어진다.
- num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return 하도록 solution 함수를 완성해야 한다.
📌 제약 조건
- 1 ≤ num_list의 길이 ≤ 1,000
- 0 ≤ num_list의 원소 ≤ 1,000
📌 문제 분석
- 이 문제도 for문 또는 stream를 사용하여 두가지 방법으로 풀 수 있다는 생각을 했다.
📌 구현코드
구현 코드 1 : for문 사용
public int[] solution(int[] numbers){
int [] arr = new int [numbers.length];
for(int i=0;i<numbers.length;i++){
arr[i] = numbers[numbers.length-i-1];
}
return arr;
}
구현 코드 1 해설
- nubmer.length크기의 새로운 배열 arr을 만들어준다.
- for문을 통해서 arr배열에 numbers의 값을 거꾸로 넣어준다.
- 배열은 0부터 number.length -1의 index를 가지고 있다.
- 때문에 number.length를 사용하게 되면 배열의 크기를 넘어가는 값(number.length)을 참조하기 때문에 -1을 사용해주어야 한다.
구현 코드 2 : stream 사용
public int [] solution(int [] numbers){
List<Integer> arr = Arrays.stream(numbers).boxed().collect(Collectors.toList());
Collections.reverse(arr);
return arr.stream().mapToInt(Integer::intValue).toArray();
}
구현코드 2 해설
- 배열의 순서를 바꾸는 것은 Stream 역할에서 마지막 데이터를 모아주는 역할에서 수행해야 한다고 생각했다.
- Collections를 사용하기 위해서는 기본형이 아닌 Integer처럼 객체형을 사용해야 한다.
- 이때문에 Stream을 사용하여 int[] → List<Integer> 형으로 바꾸어 주었다.
- 바꾼 결과를 arr에 저장하고 Collections.reverse를 사용하여 배열을 뒤집어 주었다.
- 다시 int[] 형을 사용하기 위해서 strem()을 사용하여 stream 형으로 바꾸어주고 map 을 사용하여 Integer → int 로 변환 하였다.
- toArray()를 사용하여 데이터를 int[]로 데이터를 모아준 후에 바로 return을 해주었다.
⚒️ 추가 코드 해설 ( 다른 사람 코드 참고)
- IntStream 을 사용하여 문제를 풀 수 있다.
public int[] solution4(int[] numbers) {
return IntStream.range(0,numbers.length)
.map(i -> numbers[numbers.length-1-i]).toArray();
}
- IntStream.range(0, number.length)
- 0 ~ number.lengt-1 의 nubmers 정수를 steram으로 생성한다.
- map()은 스트림의 각 요소를 새로운 값으로 변환한다.
- numbers[numbers.length-1-i] 이 코드에서 numbers의 값을 역순으로 가져온다.
- numbers.length - 1 - i를 계산하여 배열의 역순 요소를 가져옵니다.
- 예를 들어, numbers = {10, 20, 30, 40}일 때:
- i = 0 → numbers[3] = 40
- i = 1 → numbers[2] = 30
- i = 2 → numbers[1] = 20
- i = 3 → numbers[0] = 10
- map()을 적용한 결과는 {40, 30, 20, 10}이 된다.
- 이 결과를 toArray()를 사용하여 int[] 배열로 만들어준다.
'코딩테스트' 카테고리의 다른 글
[ 프로그래머스 ] 두 개 뽑아서 더하기 (1) | 2025.02.04 |
---|---|
[ 프로그래머스 ] n^2 배열자르기 (0) | 2025.02.04 |
[ 프로그래머스 ] 배열의 평균값 (0) | 2025.02.03 |
[ 프로그래머스 ] 방문 길이 (0) | 2024.12.05 |
[ 프로그래머스 ] 실패율 (0) | 2024.12.03 |