만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/programmers&bj

[C][알고리즘] 백준 5532번 풀이

D36choi 2019. 8. 8. 16:19
728x90

https://www.acmicpc.net/problem/5532

 

5532번: 방학 숙제

문제 상근이는 초등학교에 다닐 때, 방학 숙제를 남들보다 먼저 미리 하고 남은 기간을 놀았다. 방학 숙제는 수학과 국어 문제 풀기이다. 방학은 총 L일이다. 수학은 총 B페이지, 국어는 총 A페이지를 풀어야 한다. 상근이는 하루에 국어를 최대 C페이지, 수학을 최대 D페이지 풀 수 있다. 상근이가 겨울 방학동안 숙제를 하지 않고 놀 수 있는 최대 날의 수를 구하는 프로그램을 작성하시오. 입력 한 줄에 하나씩 총 다섯 줄에 걸쳐 L, A, B, C, D가

www.acmicpc.net

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
 
 
 
 
 
int vacation(int L, int A, int B, int C, int D) {
 
    int day_math, day_lan;
 
    if ((A%C) != 0) {
 
        day_lan = A / C + 1;
 
    }
 
    else day_lan = A / C;
 
    if ((B%D) != 0) {
 
        day_math = B / D + 1;
 
 
 
    }
 
    else day_math = B / D;
 
    return (day_lan > day_math) ? L - day_lan : L - day_math;
 
}
 
 
 
int main(){
 
    int L, A, B, C, D;
 
    scanf("%d\n"&L);
 
    scanf("%d\n"&A);
 
    scanf("%d\n"&B);
 
    scanf("%d\n"&C);
 
    scanf("%d"&D);
 
    printf("%d\n", vacation(L, A, B, C, D)); // Q2
 
    return 0;
 
 
 
}
cs

답지를 보지 않고 풀었다.

그래서 아마 정제된 다른 풀이에 비해 초보티가 팍팍 날 것이다.

분명 길이와 메모리 사용 면에서 더 절약이 가능할텐데 

아직 그런 수준은 커녕 정답 맞추기도 헥헥

 

가장 핵심은 두 과목의 숙제량이 얼마인지는 중요치 않고,

숙제량 / 하루동안 풀수 있는 양 = ( 벼락치기 시 며칠 걸리는 지 )

가 핵심.

 

만약 국어가 3일, 수학이 5일 걸리면 아무리 뺀질대도 5일동안은 공부만 해야 한다.

따라서 총 방학일 수 - (더 오래걸리는 과목의 벼락치기 날짜) = 놀수 있는 최대 일