2212번: 센서
첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있
www.acmicpc.net

> 의식의 흐름
이전에 풀었던 행복 유치원이랑 비슷한 문제 같은데,, 센서 위치 정렬만 중간에 추가하면 될 것 같다.
> 풀이 과정
1. 센서의 개수(N), 집중국의 개수(K)를 입력 받는다.
2. 센서의 위치를 배열(sensors)에 저장한다.
3. 센서의 위치를 오름차순으로 정렬한다.
행복 유치원에서는 학생의 키가 정렬된 순서로 주어졌기 때문에 따로 오름차순 정렬을 하지 않았다.
4. 옆 센서와의 거리를 배열(gap)에 저장한다.
5. 배열 gap을 오름차순으로 정렬한 후 `N-K`개의 합을 구한다.
`N-K`개의 합을 구하는 이유는 행복 유치원 풀이 참조
[JAVA] 백준 q13164 - 행복 유치원
13164번: 행복 유치원 행복 유치원 원장인 태양이는 어느 날 N명의 원생들을 키 순서대로 일렬로 줄 세우고, 총 K개의 조로 나누려고 한다. 각 조에는 원생이 적어도 한 명 있어야 하며, 같은 조에
monicajo074.tistory.com
6. 5번에서 구한 값을 출력한다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static int N, K;
public static int[] sensors;
public static int[] gap;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
N = Integer.parseInt(br.readLine()); // 센서의 개수
K = Integer.parseInt(br.readLine()); // 집중국의 개수
sensors = new int[N];
gap = new int[N-1];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0;i<N;i++){
sensors[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(sensors); // 센서 위치 오름차순 정렬
for(int i=0;i<N-1;i++){
gap[i] = sensors[i+1]-sensors[i];
}
Arrays.sort(gap);
int ans = 0;
for(int i=0;i<N-K;i++){
ans += gap[i];
}
bw.write(Integer.toString(ans));
bw.flush();
br.close();
bw.close();
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[JAVA] 백준 q11055 - 가장 큰 증가하는 부분 수열 (0) | 2023.10.18 |
---|---|
[JAVA] 백준 q11053 - 가장 긴 증가하는 부분 수열 (2) | 2023.10.16 |
[JAVA] 백준 q13164 - 행복 유치원 (0) | 2023.10.11 |
[JAVA] 백준 q1541 - 잃어버린 괄호 (2) | 2023.10.10 |
[JAVA] 백준 q5639 - 이진 검색 트리 (0) | 2023.10.04 |
2212번: 센서
첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있
www.acmicpc.net

> 의식의 흐름
이전에 풀었던 행복 유치원이랑 비슷한 문제 같은데,, 센서 위치 정렬만 중간에 추가하면 될 것 같다.
> 풀이 과정
1. 센서의 개수(N), 집중국의 개수(K)를 입력 받는다.
2. 센서의 위치를 배열(sensors)에 저장한다.
3. 센서의 위치를 오름차순으로 정렬한다.
행복 유치원에서는 학생의 키가 정렬된 순서로 주어졌기 때문에 따로 오름차순 정렬을 하지 않았다.
4. 옆 센서와의 거리를 배열(gap)에 저장한다.
5. 배열 gap을 오름차순으로 정렬한 후 `N-K`개의 합을 구한다.
`N-K`개의 합을 구하는 이유는 행복 유치원 풀이 참조
[JAVA] 백준 q13164 - 행복 유치원
13164번: 행복 유치원 행복 유치원 원장인 태양이는 어느 날 N명의 원생들을 키 순서대로 일렬로 줄 세우고, 총 K개의 조로 나누려고 한다. 각 조에는 원생이 적어도 한 명 있어야 하며, 같은 조에
monicajo074.tistory.com
6. 5번에서 구한 값을 출력한다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static int N, K;
public static int[] sensors;
public static int[] gap;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
N = Integer.parseInt(br.readLine()); // 센서의 개수
K = Integer.parseInt(br.readLine()); // 집중국의 개수
sensors = new int[N];
gap = new int[N-1];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0;i<N;i++){
sensors[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(sensors); // 센서 위치 오름차순 정렬
for(int i=0;i<N-1;i++){
gap[i] = sensors[i+1]-sensors[i];
}
Arrays.sort(gap);
int ans = 0;
for(int i=0;i<N-K;i++){
ans += gap[i];
}
bw.write(Integer.toString(ans));
bw.flush();
br.close();
bw.close();
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[JAVA] 백준 q11055 - 가장 큰 증가하는 부분 수열 (0) | 2023.10.18 |
---|---|
[JAVA] 백준 q11053 - 가장 긴 증가하는 부분 수열 (2) | 2023.10.16 |
[JAVA] 백준 q13164 - 행복 유치원 (0) | 2023.10.11 |
[JAVA] 백준 q1541 - 잃어버린 괄호 (2) | 2023.10.10 |
[JAVA] 백준 q5639 - 이진 검색 트리 (0) | 2023.10.04 |