문제


풀이
(1) 문제 분석하기
- 정답 배열의 길이를 입력받은 commands의 길이로 설정
- 입력값이 2차원 배열로 주어지므로 반복문을 돌면서 연산
- 배열을 특정 인덱스로 자르기 위해 Arrays.copyOfRange 사용하여 원본 배열 복사
- Array.copyOfRange(array, startIndex, lastIndex)
int[] array = {1, 2, 3, 4, 5}; int[] result = Arrays.copyOfRange(array, 1, 4); // result : [2, 3, 4] // 마지막 인덱스 포함X
(2) 슈도코드 작성하기
int형 정답 배열의 길이를 commands의 길이로 설정 for(commands의 길이만큼) { commands의 0, 1, 2번째 수를 변수에 담음 배열을 특정 인덱스로 잘라서 복사 복사한 배열 오름차순으로 정렬 복사한 배열의 (commands[i][2])번째 수를 정답 배열에 추가 } 정답 배열 리턴
(3) 코드 구현하기
package algorithm.test29; import java.util.Arrays; public class Solution { // int형 정답 배열의 길이를 commands의 길이만큼 설정 // commands for문을 돌면서 // copyOfRange 메서드를 이용하여 배열을 자르고 // 배열을 정렬 // k번째 수를 정답 배열에 넣기 public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for (int i = 0; i < commands.length; i++) { int a = commands[i][0]; int b = commands[i][1]; int c = commands[i][2]; int[] result = Arrays.copyOfRange(array, a - 1, b); Arrays.sort(result); answer[i] = result[c - 1]; } return answer; } public static void main(String[] args) { int[] array = {1, 5, 2, 6, 3, 7, 4}; int[][] commands = {{2, 5, 3}, {4, 4, 1}, {1, 7, 3}}; Solution sol = new Solution(); for (int i : sol.solution(array, commands)) { System.out.println(i); } } }
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'📊 Algorithm&SQL' 카테고리의 다른 글
[MySQL/프로그래머스] 조건별로 분류하여 주문상태 출력하기 (0) | 2023.04.23 |
---|---|
[MySQL/프로그래머스] 오랜 기간 보호한 동물(2) (0) | 2023.04.21 |
[Java/프로그래머스] 예산 (2) | 2022.11.27 |
[Java/프로그래머스] 약수의 합 (0) | 2022.11.26 |
[Java/프로그래머스] 약수의 개수와 덧셈 (0) | 2022.11.26 |