문제
내가 작성한 정답
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[num2-num1+1];
for(int i=num1; i<=num2; i++){
answer[i-num1] = numbers[i];
}
return answer;
}
}
다른 사람들이 작성한 정답 (stream이용)
import java.util.Arrays;
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
return Arrays.copyOfRange(numbers, num1, num2 + 1);
}
- Arrays.copyOfRange(numbers, num1, num2 + 1)은 numbers 배열의 num1부터 num2까지의 값을 잘라 새 배열을 반환
import java.util.stream.IntStream;
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
return IntStream.rangeClosed(num1, num2).map(i -> numbers[i]).toArray();
}
}
IntStream.rangeClosed는 num1부터 num2까지의 숫자 범위를 포함한 스트림을 생성
.map(i -> numbers[i])
- i -> numbers[i]는 스트림에서 가져온 i를 인덱스로 사용해 numbers 배열의 값을 가져온다.
.toArray()
- 변환된 스트림 데이터를 배열로 변환합니다.
다른 사람들이 작성한 정답 (변수 2개를 사용한 for문)
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = new int[num2 - num1 + 1];
for(int i = num1, j = 0; i < num2+1; i++) {
answer[j] = numbers[i];
j++;
}
return answer;
}
}
for문 하나에 변수 두 개를 선언할 수 있다!
- 콤마(
,
)로 여러 변수를 선언 가능.
- 서로 다른 역할의 변수도 다룰 수 있음.
for문 하나에 변수 두 개를 사용한 예시
public class Main {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
int[] result = new int[numbers.length];
for (int i = 0, j = numbers.length - 1; i < numbers.length; i++, j--) {
result[i] = numbers[j]; // 배열 뒤집기
}
for (int r : result) {
System.out.println(r); // 출력: 5, 4, 3, 2, 1
}
}
}
Share article