Playground/자바문제집
[백준] 1817번
미숫가루설탕많이
2023. 6. 24. 23:30
아ㅏㅏㅏㅏㅏㅏㅏ주 그냥 허를 찌르는 문제를 만났다.
제출하면 자꾸 NPE가 발생하는데, 도대체 어디서 발생하는 건지 알 수가 없었다. 하지만 문제를 똑바로 읽지 않은 나의 실수였으니...
첫 번째, N이 0보다 크거나 '같고'.. 같다는 가정을 하지 않았다. 그래서 N이 0일 경우에는 0을 반환하도록 만들었지만 여전히 NPE는 발생했다.
두 번째, 다시 문제를 자세히 살펴보니 'N이 0보다 큰 경우에' 무게가 주어진다고 했다. 설마 N이 0이면 아예 둘째 줄에 추가 정보가 들어오지 않나?? 하고 0을 반환하는 코드를 StringTokenizer를 받기 전으로 옮기니까 통과했다.
제출 코드
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
if (N == 0) {
System.out.println(0);
return;
}
int M = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
br.close();
int count = 1, boxWeight = M;
while (N-- > 0) {
int weight = Integer.parseInt(st.nextToken());
if (boxWeight - weight < 0) {
count++;
boxWeight = M;
}
boxWeight -= weight;
}
System.out.println(count);
}
}
문제를 꼼꼼히 보도록 하자,,.,.