코드 그라데이션

[Lv.0] 배열 자르기 본문

Java/알고리즘

[Lv.0] 배열 자르기

완벽한 장면 2023. 5. 10. 21:19

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

 

프로그래머스

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

programmers.co.kr

 

문제 설명

정수 배열 numbers와 정수 num1, num2 가 매개변수로 주어질 때,

num1 번째 인덱스부터 num2 번째 인덱스까지 자른 정수 배열을 return하도록 함수를 완성하세요.

 

제한사항

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

 

입출력 예

 

입출력 예 설명

입출력 예 #1

[1, 2, 3, 4, 5]의 1번째 인덱스 2부터 3번째 인덱스 4 까지 자른 [2, 3, 4]를 return 합니다.

입출력 예 #2

[1, 3, 5]의 1번째 인덱스 3부터 2번째 인덱스 5까지 자른 [3, 5]를 return 합니다.

 

아이디어

3행에서 초기화 할 때 int[numbers.length]로 잡으면 배열의 길이를 어떤식으로든 자르는 함수가 필요하겠지

여기서 원하는 것은 numbers에 1,2,3,4,5 배열이 왔을 때, 결과값으로 2,3,4 배열이 오면 된다.

자른 함수 필요 없이. 그대로 자르지 않더라도 결과만 같으면 된다.

여기서 알고 있는 건

  • 원본 배열의 길이
  • 자르는 시작 위치
  • 자르는 끝 위치

이렇게 세 가지를 알고 있다.

테스트 케이스를 확인해보면

num2-num1+1; 임을 알 수 있다.

 

또한 테스트 케이스 1번을 가지고 보면

반복문 안에 들어갈 반복 코드는  //answer[0] = numbers[num1] , answer[1] = numbers[num1+1] , answer[2] = numbers[num1+2];

이러한 규칙성을 가지고 있었다.

이걸 일반적인 식으로 바꿔보면

answer[i] = numbers[num1+i]; 이 형태가 되었다.

 

내가 작성한 답안

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

 //answer[0] = numbers[num1] , answer[1] = numbers[num1+1] , answer[2] = numbers[num1+2];
728x90
Comments