[프로그래머스] 배열 자르기

The Flawless Bead·2023년 2월 15일
0

프로그래머스

목록 보기
14/20
post-thumbnail

🔗 문제로 이동 👉 [배열 자르기]



💡 java.util.Arrays 관련 메소드 더 알아보기 👉 클릭!

  • copyOfRange(int[] original, int from, int to) : original 배열의 from 인덱스부터 to (마지막 요소의 바로 다음)인덱스까지 복사해서 새로운 배열 반환
  • fill(int[] a, int value) : 배열 a을 해당 value 값으로 채우기
  • sort(int[] a) : 배열을 오름차순으로 정렬
  • equals(int[] a, int[] b) : 두 배열의 내용물이 같은지 비교하기
  • toString() : 배열 내용 출력하기



☑️ 첫 번째 풀이

정답은 맞췄으나 코드가 깔끔하지 못한 것 같아서 다시 풀어보았다.

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {

        int[] answer = new int[num2 - num1 + 1];
        for(int i = 0; i < answer.length; i++) {
            answer[i] = numbers[num1];
            num1++;
        }
        return answer;
    }
}



✅ for문을 사용한 다른 풀이

코딩을 접한지 3년차..(경력은 3년차가 아님) 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; i++) {
            answer[j] = numbers[i];
            j++;
        }
        return answer;
    }
}



✅ Arrays를 사용한 풀이

Arrays.copyOfRange() 메소드로 문제를 풀었더니 한 줄로 끝나고 심지어 속도도 빠르다. 역시 아는 것이 힘..

import java.util.Arrays;
class Solution {
		public int[] solution(int[] numbers, int num1, int num2) {
				// copyOfRange(복사할 배열, 시작 index, 마지막 요소의 바로 다음 index)
				return Arrays.copyOfRange(numbers, num1, num2+1);
		}
}

profile
오늘을 살고 내일을 꿈꾸는 낭만주의자

0개의 댓글