PS/Programmers

[level1, 배열/정렬] K번째수

git-sun 2023. 3. 29. 00:00

1. 문제

 

 

 

 

 

 

 

2. 문제 해결 논리

1. 문제 이해

  • 주어진 것
    • int[] array    //조작할 배열
    • int[][] commands    //조작 정보가 담겨있는 이차원 배열
  • 요구되는 것
    • int[] answer    //조작이 완료된 배열

2. 데이터 구조 결정

  • 반복문, Arrays 클래스의 범위 복사, 정렬 메서드 사용

3. 알고리즘 설계

  • 이차원 배열의 행의 수만큼의 사이즈를 갖는 answer 배열 생성
  • 이차원 배열을 행 단위로 순회하는 반복문안에서 조작 및 answer 배열에 저장

 

 

 

 

 

 

3. 코드 구현

import java.util.Arrays;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
    	//commands 배열의 원소 수 == 행의 수
        //행의 수만큼 조작이 이뤄지고, 그 결과값은 한 개의 정수
        //따라서 이차원 배열의 행의 수만큼 사이즈를 갖는 배열 answer 생성
        int[] answer = new int[commands.length];
		
        //이차원 배열을 순회하면서 조작
        for (int i = 0; i < commands.length; i++) {
            //이차원 배열 i행의 0열의 원소-1 == 복사할 array의 시작 인덱스
            //이차원 배열 i행의 1열의 원소 == 복사할 array의 끝 인덱스(포함 안됨)
            //Arrays 클래스의 특정 배열의 범위 복사 메서드
            int[] temp = Arrays.copyOfRange(array, commands[i][0] - 1, commands[i][1]);
            
            //Arrays 클래스의 정렬 메서드(디폴트 == 오름차순)
            Arrays.sort(temp);
            
            //배열 answer에 복사된 배열 중 특정 인덱스의 원소 저장
            answer[i] = temp[commands[i][2] - 1];
        }
        return answer;
    }
}

 

 

 

 

 

 

* Reference

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

 

프로그래머스

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

programmers.co.kr

 

반응형