기록하는 공부

[Programmers] 120833 배열 자르기(Arrays.copyofRange()) 본문

Language/Java

[Programmers] 120833 배열 자르기(Arrays.copyofRange())

SS_StudySteadily 2023. 3. 2. 20:29
728x90
반응형

출처

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의 길이

 

 

입출력 예

 

입출력 예 #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 합니다.

 

 


 

풀이1(Arrays.copyofRange() 사용)
import java.util.*;

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

 

 

Arrays.copyofRange() 메소드를 사용해 해결했다.

첫번째 인자에 배열을 넣고, 두번째 인자에는 시작 값, 마지막 인자에는 마지막 값의 +1을 한다.

그러면 시작 값에 입력한 num1의 값인 인덱스부터 num2+1의 값의 인덱스에 해당하는 배열의 값이

answer 배열에 들어가게 되고 이를 반환하면 풀리는 문제이다.

 

 

실행 결과

 


 

풀이2(for문을 사용하기)
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;
    }
}

 

내가 풀다가 시도했던 풀이와 비슷하지만 성공한 풀이코드이다.

이중 for문이 아닌 index를 0으로 초기화하고 ++연산을 수행하면서 answer배열에 값을 채워넣는다.

 

하나배워갑니당..

 

 


 

내가 풀다가 실패한 풀이
class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
        int[] answer = new int [num2-num1+1];
        
        for(int j=0; j<answer.length; j++) {
            for(int i=num1; i<=num2; i++) {
                answer[j] = numbers[i];
            }
        }
        return answer;
    }
        
        
}

 

for문을 두번 사용해서 해결해보려고 했다.

answer에 num1부터 num2까지의 길이만큼을 주고

for문의 j에 그 길이만큼 반복하면서 numbers의 인덱스 i=num1부터 num2까지의 값을 answer에 넣으려고 했는데

오류가 발생했다.

 

 

실패한 실행 결과

 

728x90
반응형