백준(C언어) 풀이/그리디(Greedy) 알고리즘

백준(C) 10162번 전자레인지 풀이

개발윗미 2021. 8. 18. 10:37

C로 구현한 10162번 전자레인지 문제 풀이입니다.

 

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

 

10162번: 전자레인지

3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은

www.acmicpc.net


#include <stdio.h>

int main() {
	int t, arr[] = {300, 60, 10}, count[3] = {0,};
	scanf("%d", &t);
	if (t % 10 == 0) {
		for(int i=0; i<3; i++) {
			while (t>=arr[i]) {
				t -= arr[i];
				count[i] ++;
			}
			if(t == 0) {
				break;
			}
		}
		for (int i=0; i<3; i++) {
			printf("%d ", count[i]);
		}
	} else {
		printf("-1");
	}
}

 

각 5분, 1분, 10초를 초단위로 배열에 저장하고, 각 초의 버튼을 누른 횟수 또한 선언한다.

 

반복문 내에서는 각 초의 버튼을 누른 횟수를 증가시키는데, 남은 시간이 해당 초보다 클 경우에 while문을 통해 

 

반복적으로 수행한다. 남은 시간이 0 일 때 반복문을 빠져나와 각 초의 버튼을 누른 횟수를 출력한다.