상세 컨텐츠

본문 제목

(자바 알고리즘)K번째 수2

Algorithm

by choiDev 2019. 1. 6. 00:19

본문

안녕하세요 초이입니다~!

역시 알고리즘을 풀면서 어떻게 하면 가독성이 좋게, 

어떻게 하면 조금 더 간결하고 효율성 있게, 항상 고민하게 됩니다.

제가 고민하고 만든 알고리즘보다 더욱 좋은 결과가 있다면 

다른 분들도 저에게 피드백과 가지고 계신 지식을 공유해 주시면 감사하겠습니다.


 K번째 수2

자세한 문제 설명은 아래 코드에 있으니 참고하시고 다른분들도 풀어 보시길 바랍니다.

import java.util.*;

/**
* 문제내용 : K번째 수2
* <p>

* 문제 입력 데이터 : array[] = {1, 5, 2, 6, 3, 7, 4}

* commands[][] = {{2, 5, 3},{4, 4, 1},{1, 7, 3}}

*
* 문제 상세설명 : commands 1번째 요소 (array를 자를 시작 위치)
* commands 2번째 요소 (array를 자를 끝 위치)
* commands 3번째 요소 (원하는 숫자의 위치)
* 순서 1 - commands 1번째 요소와 2번째 요소를 사용해서 array를 잘라낸 후 정렬한다
* 순서 2 - 정렬된 배열에서 commands 3번째 요소를 사용해서 숫자를 가져와 answer배열에 대입한다.
*/

public class KnumberExample {
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}};
int result[] = new int[3];

FixNum fixNum = new FixNum();
result = fixNum.solution(array,commands);

System.out.println(Arrays.toString(result));
}
static class FixNum {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
int[] temp = {};

for(int i=0; i<commands.length; i++) {
temp= Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
Arrays.sort(temp);
answer[i]=temp[commands[i][2]-1];
}
return answer;
}
}
}


관련글 더보기