Notice
Recent Posts
Recent Comments
Link
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 메뉴얼
- baekjoon
- Rocky Linux 9
- available plugins
- poll scm
- subversion
- tomcat-users.xml
- jsonb select
- javascript
- 자바
- rocky linux
- linux
- 백준
- 1773번
- 서버 접근
- jaekjoon java
- putty
- 환경번수
- PostgreSQL
- boj
- SVN
- jenkins
- 백준 JAVA
- 사용법
- 백준 java jaekjoon JAVA
- DBeaver
- java
- bekjoon
- ora-01476
- 제수가 0입니다
Archives
기록하는 개발자
[백준 1817번] 짐 챙기는 숌 - JAVA 알고리즘 본문
1817번 |
문제 | |
숌은 짐을 챙겨서 겨울캠프에서 집으로 가려고 한다. 근데 숌은 공부를 많이 하러 캠프에 온 것이기 때문에 책을 엄청나게 많이 가지고 왔다. 숌은 이 책을 방에 탑처럼 쌓아 놨다. 숌은 책을 박스에 차곡차곡 넣어서 택배로 미리 보내려고 한다. 책은 탑처럼 차곡차곡 쌓여있기 때문에, 차례대로 박스에 넣을 수밖에 없다. 각각의 책은 무게가 있다. 그리고 박스는 최대 넣을수 있는 무게가 있다. 숌이 필요한 박스의 개수의 최솟값을 구하는 프로그램을 작성하시오. |
|
입력 | |
첫째 줄에 책의 개수 N과 박스에 넣을 수 있는 최대 무게 M이 주어진다. N은 0보다 크거나 같고 50보다 작거나 같은 정수이고, M은 1,000보다 작거나 같은 자연수이다. N이 0보다 큰 경우 둘째 줄에 책의 무게가 공백을 사이에 두고 주어진다. 책의 무게는 M보다 작거나 같은 자연수이다. | |
출력 | |
첫째 줄에 필요한 박스의 개수의 최솟값을 출력한다. | |
예제 입력 | 예제 출력 |
11 12 12 1 11 2 10 3 4 5 6 6 1 |
6 |
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.ParseException;
import java.util.StringTokenizer;
public class Main {
private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 선언
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 선언
static StringTokenizer st;
private static int N; //책 개수
private static int book = 0; //현재 책 무게
private static int nowBox = 0; //박스 현재 무게
private static int maxBox = 0; //박스 최대 무게
private static int count = 1; //박스 개수
public static void main(String[] args) throws IOException, NumberFormatException, ParseException {
// TODO Auto-generated method stub
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
if(N==0) {
count = 0;
}else {
maxBox = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
for(int i = 0; i<N; i++) {
book = Integer.parseInt(st.nextToken());
if(nowBox+book>maxBox) { //박스에 담지 못함
nowBox = book;
count++;
}else if(nowBox+book==maxBox){ //박스가 가득 참
nowBox = 0;
if(i!=N-1) { //마지막 책 제외
count++;
}
}else {
nowBox = nowBox + book;
}
}
}
bw.write(count+"");
bw.close();
br.close();
}
}
개인적으로 정리한 내용을 간단하게 풀어 작성했습니다. 이해가 안가는 부분은 댓글 남겨주시면 설명해드리겠습니다. |
'Baekjoon Online Judge' 카테고리의 다른 글
[백준 2839번] 설탕배달 - JAVA 알고리즘 (0) | 2022.07.12 |
---|---|
[백준 4796번] 캠핑 - JAVA 알고리즘 (0) | 2022.07.07 |
[백준 2751번] 수 정렬하기2 - JAVA 알고리즘 (0) | 2022.07.01 |
[백준 1205번] 등수 구하기 - JAVA 알고리즘 (0) | 2022.06.23 |
[백준 1996번] 지뢰찾기 - JAVA 알고리즘 (0) | 2022.06.17 |
Comments