728x90
반응형
2024.05.07기준 - 실버4
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 정렬을 하여 최소값의 2배 기준으로 비교하는 문제입니다.
저는 어차피 최소값에 해당하는 페이지를 생성해야 되며,
이미 생성된 페이지에 들어가는 책들을 다 정리하는 방식을 선택했습니다.
책의 개수만큼 arr 배열에 저장을 하여 오름차순 정렬을 해줍니다.
그러고 1페이지에 가장 작은 값(arr[0])을 넣어 주었습니다.
반복문을 통해 1부터 n까지 배열의 조회합니다.
조회한 배열(arr[i])가 가장 작은 값(min)의 2배 보다 크거나 같다면 페이지를 새로 생성하고, min 값을 최신화 시켜줍니다.
반복문이 종료되면 최소 페이지 개수가 나오고 그 값을 출력하는 방식으로 풀이를 했습니다.
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine()); // 책의 개수.
StringTokenizer st = new StringTokenizer(br.readLine()); // 책의 가격들.
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
// 책 가격 기준으로 오름차순 정렬.
Arrays.sort(arr);
int page = 1; // 페이지 수.
int min = arr[0]; // 현재 가장 작은 가격.
for (int i = 1; i < n; i++) {
// 조회하는 책의 가격이 min의 2배보다 크거나 같다면
if (min * 2 <= arr[i]) {
page++; // 페이지 수를 올려주고.
min = arr[i]; // min 가격 재설정.
}
}
bw.write(Integer.toString(page));
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BAEKJOON / 백준 - JAVA 31799번 평점 변환 (0) | 2024.05.08 |
---|---|
BAEKJOON / 백준 - JAVA 9506번 약수들의 합 (0) | 2024.05.08 |
BAEKJOON / 백준 - JAVA 31797번 아~파트 아파트 (0) | 2024.05.07 |
BAEKJOON / 백준 - JAVA 15917번 노솔 방지문제야!! (0) | 2024.05.07 |
BAEKJOON / 백준 - JAVA 31780번 불사조 (0) | 2024.05.02 |