[프로그래머스/Java/입문/❌⭕️] 배열 자르기 - Arrays.copyOfRange()

2023. 1. 3. 21:42·🐤 CodingTest/Java

 

 

 

🗣️ 메모

모르는 메소드가 아직 많구만,,,

 

 

 


 

 

 

✏️ [배열 자르기]

문제 설명

정수 배열 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]

입출력 예 설명

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

 

 

 


🔥 TRY #1 실패

👉🏻 배열을 문자열로 바꾸고 대괄호와 콤마를 split로 뺌

👉🏻 subString으로 배열 자르기

👉🏻 대괄호와 콤마를 join으로 다시 연결시킨 후 문자열을 배열로 바꾸기

 

 

import java.util.Arrays;

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
        int[] answer = new int[numbers.length];
        
        String numberStr = Arrays.toString(numbers);
        // System.out.println(numberStr); // 잘 뽑힘
        
        // split, subString, join을 쓰면?
        numberStr.split(",");
        
        System.out.println(numberStr);
        
        
        return answer;
    }
}

👉🏻 를 해 보려고 시도해 보았으나 더욱 간단한 로직이 떠오름!

 

 

 

 

🔥🎉 TRY #2 [실행 결과] - 반복문 활용하기

👉🏻 for문을 num1부터 num2까지 돌리자

👉🏻 새로운 배열의 길이는 num2-num1+1

 

import java.util.Arrays;

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++, j++) {
            answer[j] = numbers[i];
        }
       
        return answer;
    }
}

 

 

 

 

⭐️ 다른 풀이 - Arrays.copyOfRange()

👉🏻 배열을 복사하는 메소드로 복사 시작 위치와 끝 위치를 지정할 수 있음

👉🏻 단, 시작 위치는 포함이며 끝 위치는 포함하지 않음

 

import java.util.Arrays;

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

 

 

 


출처: 프로그래머스 코딩 테스트 연습,https://school.programmers.co.kr/learn/challenges

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

 

저작자표시 비영리 변경금지 (새창열림)
'🐤 CodingTest/Java' 카테고리의 다른 글
  • [프로그래머스/Java/입문/⭕️] 특정 문자 제거하기
  • [프로그래머스/Java/입문/❌⭕️] 문자 반복 출력하기
  • [프로그래머스/Java/입문/⭕️] 문자열 뒤집기 - StringBuffer, StringBuilder
  • [프로그래머스/Java/입문/❌⭕️] 짝수는 싫어요
천재강쥐
천재강쥐
  • 천재강쥐
    디버거도 버거다
    천재강쥐
  • 전체
    오늘
    어제
    • Category (467)
      • 진짜 너무 궁금한데 이걸 나만 몰라...? (0)
      • 💾 Portfolio (2)
      • 🐤 CodingTest (28)
        • Java (20)
        • ᕕ(ꐦ°᷄д°᷅)ᕗ❌ (5)
      • 🚀 from error to study (142)
        • AI (1)
        • Cloud (2)
        • DB (12)
        • Front-End (16)
        • Github (14)
        • Java (39)
        • Mac (7)
        • Normal (29)
        • Server (22)
      • 📘 certificate (44)
        • 📘 리눅스마스터1급 (1)
        • 📘⭕️ 정보처리기사 (40)
        • 📘⭕️ SQLD (3)
      • 📗 self-study (234)
        • 📗 inflearn (35)
        • 📗 생활코딩 (8)
        • 📗 KH정보교육원 당산지원 (190)
      • 🎨 Scoop the others (0)
        • 📖 Peeking into other people.. (0)
        • 🇫🇷 (0)
        • 📘⭕️ 한국사능력검정시험 심화 (11)
        • 오블완 (4)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.1
천재강쥐
[프로그래머스/Java/입문/❌⭕️] 배열 자르기 - Arrays.copyOfRange()
상단으로

티스토리툴바