728x90
문제설명
입력 & 출력
나의 풀이
이번 문제는 주어진 휴가 일 수와 캠핑장의 영업 일 수에 따라서 캠핑을 할 수 있는 최대 일 수를 계산하는 문제입니다.
즉 휴가기간 동안 얼마큼 캠핑장에 있을 수 있는 일수를 구하는 문제입니다.
먼저 빠른 입력을 위해서 BufferedReader클래스를 사용하여 입력을 받아주고 해당 입력을 StringTokenizer를 사용하여 공백을 기준으로 토큰으로 나누어줍니다.
0 0 0 이 입력되기 전까지 입력이 계속 이어져야 하기 때문에 while문을 무한 반복으로 선언해 줍니다.
0 0 0이 입력된다면 break문으로 반복문을 빠져나오고, 휴가 일 수를 P로 나누어 몫을 구합니다. 이는 캠핑이 가능한 "주기 수"입니다.
그리고 남은 휴가일수와 캠핑장의 영업일수를 비교하여 더 작은 값을 더해줍니다. 남은 휴가 일수와 캠핑장의 영업 일수 중 작은 것을 선택하는 이유는 남은 휴가 일수가 많아도 캠핑장이 운영을 하지 않으면 캠핑장에서 있을 수 없기 때문입니다.
예를 들어:
- 캠핑장의 영업 일 수 L = 5일
- 캠핑장의 영업 주기 = 8일
- 총 휴가 일 수 = 20일
이를 바탕으로 예를 들어보면
- 1) 총 캠핑 가능한 주기 수를 구합니다.
- 1-1) 주기 수 : V / P ➡️ 20/8 = 2
- 2) 주기마다 캠핑장에서 보낼 수 있는 최대 일수는 L
- 2-1) 주기별캠핑일수 = 2 × L = 2 × 5 = 10일
- 3) 남은 휴가 일수를 구합니다.
- 3-1) 남은휴가일수=남은 휴가일수=V % P = 20 % 8= 4일
- 4) 남은 휴가 일수와 캠핑장의 영업 일수 중 작은 값을 선택
- 4-1) 추가 가능한 캠핑 일수 = min(남은 휴가 일수, L) = min(4,5)= 4일
- 5) 최종 캠핑 가능한 일수
- 5-1)
'Coding Test > 백준' 카테고리의 다른 글
[백준] 슈퍼마리오 (BufferedReader, 브루트 포스 알고리즘, 2851번, Java) (0) | 2024.06.22 |
---|---|
[백준] 뒤집힌 덧셈 (BufferedReader, StringBuilder, 1357번, Java) (0) | 2024.06.07 |
[백준] 세 막대 (삼각형 변의 길이 조건, 14215번, Java) (1) | 2024.06.06 |
[백준] 나누기 (BufferedReader, printf, 1075번, Java) (0) | 2024.06.06 |
[백준] 저항 (BufferedReader, HashMap, 1076번, Java) (0) | 2024.06.05 |