백준 알고리즘/Lang-C | C++

[백준/C] 5532번 방학 숙제

Jongung 2021. 8. 17. 14:18

 

백준 온라인 저지 / 5532번 방학 숙제

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

 

5532번: 방학 숙제

한 줄에 하나씩 총 다섯 줄에 걸쳐 L, A, B, C, D가 주어진다. (2 ≤ L ≤ 40, 1 ≤ A, B ≤ 1000, 1 ≤ C, D ≤ 100) 항상 방학 숙제를 방학 기간내에 다 할 수 있는 경우만 입력으로 주어진다.

www.acmicpc.net

 

 

 

  • 사용언어 : C (C99)
  • 알고리즘 : 수학, 사칙연산

 

 

 

C 코드

1. 문제 정리

 

총 5개의 입력을 받고 풀면 되는 문제이다.

그나마 브4같은 문제였지 않나 싶다.

 

국어 = A / C

수학 = B / D 

이런식으로 접근해서 풀었다. 그리고 국어와 수학중 더 큰 것을 고른다는 의미로 Max라는 변수를 만들어서 풀어줬다

굳이 이렇게 풀 이유는 없다만, 함수 공부랄까 뭐랄까 뭐 그런거다 ㅇㅇ.. 이게 익숙해져야 c++가서 좀 괜찮을 거 같아서

 

2. max문

 

다른건 모르겠고 max문에 집중 해보자 (다른 거야 워낙 쉬운 문제니..)

 

int max(int day1, int day2) {
	if (day1 >= day2) {
		return day1;
	}
	else {
		return day2;
	}
}

 

그냥 day1보다 day2가 작으면 day1값이 반환 그것이 아니면 day2가 반환되는 매우 쉬운 코드다.

그럼 완성 해보자.

 

 

3. 완성 코드

#include <stdio.h>

int max(int day1, int day2) {
	if (day1 >= day2) {
		return day1;
	}
	else {
		return day2;
	}
}

int main(void)
{
	int L, A, B, C, D;
	scanf_s("%d %d %d %d %d", &L, &A, &B, &C, &D);

	int day1, day2;

	day1 = A / C;
	day2 = B / D;

	if (A % C != 0) {
		day1++;
	}
	if (B % D != 0) {
		day2++;
	}

	printf("%d", (L - max(day1, day2)));
}