코딩테스트 회고록/코테_Java

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

iamjisu 2023. 2. 1. 22:03

프로그래머스 코딩테스트 연습 입문 '배열 자르기' 문제입니다.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

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


⚠️ 제한사항 및 입출력 예

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

↓ 입출력 예

numbers (입력) num1 (입력) num2 (입력) result (출력)
[1, 2, 3, 4, 5] 1 3 [2, 3, 4]
[1, 3, 5] 1 2 [3, 5]

✏️ 직접 구현한 코드

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

🗣️ 코드 설명

  1. 먼저 answer배열의 크기를 num2 - num1 + 1 로 정했습니다.
  2. for문에는 0부터 answer배열의 크기만큼 증가하며 반복하는 i와, num1부터 증가하며 반목하는 j를 두었습니다.
  3. 그렇게 answer배열은 0부터 증가하게 되고, numbers배열은 num1부터 num2 숫자까지의 인덱스로 증가하게 됩니다.

🔥다른 사람의 코드

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

저는 for문을 i와 j 두 가지를 이용해 반복했지만, 이 분은 i 하나만으로 반복시켰네요 :O

다음에는 코드를 줄일 방법을 더 생각해 봐야겠습니다!!