[프로그래머스] Lv.0 배열 자르기.java

김엄지·2024년 4월 18일

알고리즘

목록 보기
51/90

🐤 목표

앞으로 매일 꾸준히 코딩테스트를 진행하면서 단계를 높여가보자.

문제 설명

정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.

제한사항

2 ≤ numbers의 길이 ≤ 30
0 ≤ numbers의 원소 ≤ 1,000
0 ≤num1 < num2 < numbers의 길이

입출력의 예

문제 풀이

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;
    }
}

배열에서 num1번째 인덱스부터 num2번째 인덱스까지의 부분 배열을 추출한다.

1) 범위의 부분 배열의 크기는 num2 - num1 + 1 이다.
2) 반복문을 돌면서
현재 인덱스 i에서 시작 인덱스 num1을 빼주어 새로운 배열의 인덱스를 계산한다. 이를 통해 부분 배열의 첫 번째 인덱스는 항상 0으로 시작하게 된다.

다른 문제 풀이 1

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
    
        int[] answer = new int[num2 - num1 +1];
        int index = 0;
        
        // 반복문으로 주어진 범위에 해당하는 부분 배열 추출
        for(int i = num1; i <= num2; i++) {
            answer[index] = numbers[i];
            index++;
        }
        return answer;
    }
}

배열 인덱스를 변수 index로 설정하고, 반복문을 통해 인덱스를 증가시키면서 부분 배열의 각 요소를 저장한다.
그 외에는 위의 풀이와 동일하다.

다른 문제 풀이 2

import java.util.*;

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
    	
        int[] answer = new int[numbers.length};
        
        answer = Arrays.copyOfRange(numbers, num1, num2 + 1);
        
        return answer;
    }
}

1) int 타입 배열 answer 변수를 numbers의 길이만큼 크기 지정한다.
2) Arrays.copyOfRange(복사할 배열, 복사 시작 인덱스, 배열 크기) 메서드를 사용하여 배열 복사한다.
메서드 형식 copyOfRange(int[] original, int from, int to)

java.util.Arrays 클래스
배열을 다루는 유용한 메서드들을 제공하는 유틸리티 클래스이다.

  • sort(): 배열을 오름차순으로 정렬합니다. 오름차순 정렬 외에도 다른 오버로드된 메서드를 사용하여 사용자 지정된 비교자를 통해 배열을 정렬할 수 있습니다.
  • binarySearch(): 이진 검색 알고리즘을 사용하여 배열에서 지정된 요소를 검색합니다. 배열은 미리 정렬되어 있어야 합니다.
  • copyOf(): 배열의 특정 부분을 복사하여 새로운 배열을 생성합니다.
  • copyOfRange(): 배열의 지정된 범위 내 요소를 복사하여 새로운 배열을 생성합니다.
  • fill(): 배열의 모든 요소를 지정된 값으로 채웁니다.
  • equals(): 두 배열이 같은지 비교합니다. 배열의 모든 요소가 서로 같아야 합니다.
  • toString(): 배열을 문자열로 변환하여 반환합니다. 각 요소는 쉼표로 구분되어 출력됩니다.
  • asList(): 배열을 List로 변환합니다. 이 메서드는 배열과 List 간의 다양한 상호 운용성을 제공합니다.
  • stream(): 배열을 스트림으로 변환합니다. 이를 통해 배열 요소에 대한 함수형 프로그래밍 기법을 적용할 수 있습니다.
  • parallelSort(): 배열을 병렬로 정렬합니다. 대량의 데이터를 처리할 때 효율적입니다.

Arrays에 대해서 공부를 더 해보자 !

profile
나만의 무언가를 가진 프로그래머가 되자

0개의 댓글