inblog logo
|
silver
    알고리즘문제풀기

    [알고리즘문제풀기] 배열 자르기

    silver's avatar
    silver
    Dec 01, 2024
    [알고리즘문제풀기] 배열 자르기
     

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/120833
     

    내가 작성한 정답

    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()
    • 변환된 스트림 데이터를 배열로 변환합니다.
    💡

    map은 스트림 내의 각 요소를 주어진 변환함수인 람다식에 따라 변환하여 새로운 스트림을 만든다.

    • 목적: 스트림 내 요소를 변환.
    • 사용법: .map(변환함수) 또는 .mapToObj(객체 변환 함수).
    • 반환: 변환된 새 스트림.
     

    다른 사람들이 작성한 정답 (변수 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

    silver

    RSS·Powered by Inblog