문제 지문 #3
자연수가 들어있는 배열에서 숫자 K개를 선택하려 합니다. 이때, 선택한 숫자 중 가장 큰 수와 가장 작은 수의 차이가 최소가 되도록 해야 합니다.
예를 들어 배열에 들어있는 숫자가 [9, 11, 9, 6, 4, 19]이고, K = 4 라면
- 숫자 4개를 [9, 11, 9, 6]로 뽑으면 (가장 큰 수 - 가장 작은 수) = (11 - 6) = 5가 됩니다.
- [9, 9, 6, 4]와 같이 숫자를 뽑아도 (가장 큰 수 - 가장 작은 수) = (9 - 4) = 5가 됩니다.
그러나 가장 큰 수와 가장 작은 수의 차이가 5보다 작아지도록 숫자 4개를 선택하는 방법은 없습니다.
자연수가 들어있는 배열 arr, 선택해야 하는 숫자 개수 K가 매개변수로 주어질 때, 선택한 숫자 중 가장 큰 수와 가장 작은 수의 차이가 최소가 되록 arr에서 숫자 K개를 선택했을 때, 그때의 가장 큰 수와 가장 작은 수의 차이를 return 하도록 solution 메서드를 완성해주세요.
#####매개변수 설명
자연수가 들어있는 배열 arr, 선택해야 하는 숫자 개수 K가 solution 메서드의 매개변수로 주어집니다.
- arr 배열의 길이는 5 이상 1,000 이하입니다.
- arr의 원소는 1 이상 10,000 이하인 자연수입니다.
- K는 4 이상 50 이하인 자연수입니다.
#####return값 설명
선택한 숫자 중 가장 큰 수와 가장 작은 수의 차이가 최소가 되도록 arr에서 숫자 K개를 선택했을 때, 그때의 가장 큰 수와 가장 작은 수의 차이를 return 해주세요.
#####예시
[9, 11, 9, 6, 4, 19] | 4 | 5 |
#####예시 설명
예시 #1
문제의 예시와 같습니다.
혼자 풀이
전체 완성하는 문제입니다. 주어진 배열의 숫자 중에서 K개를 골랐을 때, 가장 작은 수와 가장 큰 수의 차이를 구하는 문제입니다. 주어진 배열을 정렬하면 각 수간의 차이가 작아지므로 Arrays.sort()로 정렬한 후에 K개씩을 순차적으로 뽑았을 때 가장 큰 수와 작은 수의 차이가 가장 작을 때를 찾았습니다.
// 다음과 같이 import를 사용할 수 있습니다.
import java.util.*;
class Main {
public int solution(int[] arr, int K) {
// 여기에 코드를 작성해주세요.
int answer = 0;
//배열을 오름 차순으로 정렬하고, 순서대로 숫자를 K개 뽑았을 때 차이가 가장 작을 때를 찾음
Arrays.sort(arr);
answer=10000;
for(int i=0;i<arr.length-(K-1);i++){
if(answer>(arr[i+(K-1)]-arr[i])) answer=arr[i+(K-1)]-arr[i];
}
return answer;
}
// 아래는 테스트케이스 출력을 해보기 위한 main 메소드입니다.
public static void main(String[] args) {
Main sol = new Main();
int[] arr = {9, 11, 9, 6, 4, 19};
int K = 4;
int ret = sol.solution(arr, K);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
System.out.println("solution 메소드의 반환 값은 " + ret + " 입니다.");
}
}
정답
공식 홈페이지에서 정답이 제공되지 않습니다.
실습은 아래 참고
2022.10.25 - [Programming/Cos Pro 1급] - Cos Pro 1급 공부 사이트 추천 - 구름 에듀(https://edu.goorm.io/)
Cos Pro 1급 공부 사이트 추천 - 구름에듀(https://edu.goorm.io/)
구름 EDU??? YBM 공식 사이트에서 받은 문제 지문/문제 코드/정답 코드를 intellij에서 공부하다가 후배 추천으로 구름 에듀를 알게 되었습니다. 문제 지문 따로 문제 코드 따로 열어보는 게 여간 불
woogong80.tistory.com
'Programming > Cos Pro 1급' 카테고리의 다른 글
Cos Pro 1급 - 샘플 문제 6차 5번 - 획득할 수 있는 코인의 갯수 (0) | 2022.11.18 |
---|---|
Cos Pro 1급 - 샘플 문제 6차 4번 - 카드 섞기 (0) | 2022.11.17 |
Cos Pro 1급 - 샘플 문제 6차 2번 - 단어를 적는 데 필요한 줄 수 (3) | 2022.11.17 |
Cos Pro 1급 - 샘플 문제 6차 1번 - 모든 꽃이 피는 날 구하기 (3) | 2022.11.16 |
Cos Pro 1급 - 샘플 문제 5차 10번 - 급여의 총합 구하기 (2) | 2022.11.16 |
댓글