[Java] 프로그래머스 : K번째 수

728x90

[Java] 프로그래머스 : K번째 수


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

 

프로그래머스

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

programmers.co.kr

접근

처음에 commands의 각 요소들이 두자리 수 이상의 정수가 온다는 것을 인지하지 못하고 String으로 변환하여 substring으로 잘라내다가 2, 6번 케이스에서 오류가 났었다.

 

array가 [1, 5, 2, 6, 3, 7, 4]와 같은 경우, String으로 변환하면 1526374가 되고 필요한 부분을 잘라 각각을 정수로 다시 변환하여 k번째 값을 추출할 생각이었다.

 

그러나 만약 array가 [1, 100, 22, 55]와 같은 경우 String으로 변환하면 11002255가 되기 때문에 i부터 j까지를 substring하면 엉뚱한 결과가 나오게 된다.

 

따라서 String으로 변환하지 않고 array 자체를 슬라이싱 하는 방법이 필요했다.

 

 

코드

import java.util.*;
class Solution {
    public int[] solution(int[] array, int[][] commands) {
        int[] answer = new int[commands.length];
        
        for(int i = 0; i < commands.length; i++) {
            int[] temp = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
            Arrays.sort(temp);
            answer[i] = temp[commands[i][2]-1];
        }
        return answer;
    }
}

 

https://junghn.tistory.com/entry/JAVA-%EB%B0%B0%EC%97%B4%EB%B3%B5%EC%82%AC-%EB%B0%A9%EB%B2%95-ArrayscopyOfRange-%EC%82%AC%EC%9A%A9%EB%B0%A9%EB%B2%95%EA%B3%BC-%EC%98%88%EC%A0%9C

 

[JAVA] 배열복사 방법 Arrays.copyOfRange/ 사용방법과 예제

오늘은 자바에서 배열 복사를 쉽게 할 수 있는 copyOfRange에 대해 정리해 보겠습니다. copyOfRange - 전달받은 배열의 지정된 범위에 해당하는 요소만을 새로운 배열로 복사하여 반환 구문 public static i

junghn.tistory.com

 

728x90