-
[모각코 23-1] 1회차 - 백준 2212번 센서학교생활/23-1 '모여서 각자 코딩' 2023. 3. 20. 09:42728x90
* 그리디
중요한 건 집중국을 둘 센서의 위치를 정확히 알아야하는 것이 아니다.
전체 코드:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int sensors = Integer.parseInt(br.readLine()); int K = Integer.parseInt(br.readLine()); // 집중국 int[] pos = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); Arrays.sort(pos); Integer[] diff = new Integer[sensors-1]; for(int i=1;i<sensors;i++){ diff[i-1] = pos[i]-pos[i-1]; } Arrays.sort(diff, (d1, d2)-> { return d2 - d1; }); int total=0; for(int i=K-1;i<diff.length;i++){ total += diff[i]; } System.out.println(total); } }
예시는 입력 2
10 5 20 3 14 6 7 8 18 10 12 15
를 사용하여 설명한다.
int[] pos = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray(); Arrays.sort(pos);
int[] pos: 입력 세 번째 줄로 들어오는 센서의 위치를 오름차순 정리한다.
예)
20 3 14 6 7 8 18 10 12 15 -> 3 6 7 8 10 12 14 15 18 20
Integer[] diff = new Integer[sensors-1]; for(int i=1;i<sensors;i++){ diff[i-1] = pos[i]-pos[i-1]; } Arrays.sort(diff, (d1, d2)-> { return d2 - d1; });
Integer[] diff : 센서의 위치의 차이를 구한다.
* int 배열이 아닌 Integer 를 쓴 이유는 Arrays.sort 내림차순에 람다식을 사용하기 위함
예)
int[] pos = {3 6 7 8 10 12 14 15 18 20}
Integer[] diff = {3, 1, 1, 2, 2, 2, 1, 3, 2}
내림차순 sort 후 -> Integer[] diff = {3, 3, 2, 2, 2, 2, 1, 1}
int total=0; for(int i=K-1;i<diff.length;i++){ total += diff[i]; } System.out.println(total);
1. 최대 K개의 집중국의 수신 가능 영역의 길이의 합의 최솟값을 출력해야 한다.
2. 집중국을 K개 설치한다는 것은, 일직선 상의 센서들에 chunk 를 K-1번 끊는다는 것.
예) 집중국 5개 -> 3 / 6 7 8 / 10 / 12 14 15 / 18 20
=> 즉 내림차순된 Integer[] diff 에서 K-1 부터 total sum 을 더함
728x90'학교생활 > 23-1 '모여서 각자 코딩'' 카테고리의 다른 글
[모각코 23-1] 6회차- 자바스크립트에서 함수는 일급시민이다. (0) 2023.05.02 [모각코 23-1] 5회차-Interaction Diagrams (0) 2023.05.02 [모각코 23-1] 4회차- OOAD(2) (0) 2023.04.06 [모각코 23-1] 3회차- OOAD (0) 2023.04.04 [모각코 23-1] 2회차- HTML/CSS 기초 궁금증 정리 (0) 2023.03.26