백준 BaekJoon 2991번: 사나운 개 [Java] 자바

2020-11-29


문제

창영 마을의 우체부, 우유배달원, 신문배달원은 상근이네 집에 가는 것을 매우 싫어한다. 그 이유는 상근이네 집에는 사나운 개 두 마리가 지키고 있기 때문이다. 하지만, 그들은 이 개의 행동이 예측 가능하다는 것을 모르고 있다.

 

매일 아침, 개 한마리는 A분동안 공격적이고, B분동안 조용히 쉬고 있다. 또다른 개는 C분동안 공격적이고, D분동안 조용히 쉰다. 두 개는 이 행동을 계속해서 연속적으로 반복한다.

우체부, 신문배달원, 우유배달원의 도착 시간이 주어졌을 때, 개 몇 마리에게 공격을 받는지 알아내는 프로그램을 작성하시오.

입력

첫째 줄에 A, B, C, D가 주어진다. 

둘째 줄에는 P, M, N가 주어진다. P는 우체부의 도착 시간, M은 우유배달원의 도착 시간, N은 신문배달원의 도착 시간이다. 매일 아침이 시작하는 시간을 0이라고 한다. 도착 시간은 아침이 시작한 후 지난 시간이다. 예를 들어, P가 3이면, 우체부는 아침이 시작하고 세 번째 분이 진행되는 중에 도착했다는 뜻이다.

모든 수는 1보다 크거나 같고, 999보다 작거나 같은 정수이다.

출력

첫째 줄에는 우체부, 둘째 줄에는 우유배달원, 셋째 줄에는 신문배달원이 개 몇 마리에게 공격 받는지 출력한다.


import java.util.Scanner;

public class TemplateA {
    public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		
		int a = scan.nextInt();
		int b = scan.nextInt();
		//1번 개 짓는 시간, 쉬는 시간
		int c = scan.nextInt();
		int d = scan.nextInt();
		//2번 개 짓는 시간, 쉬는 시간
		
		for(int i = 0; i < 3; i++) {
			int man = scan.nextInt();
			int nmg = man;
			int count = 0;
			while(true) {
				nmg -= a;
				if(nmg <= 0) {
					count++;
					break;
				}
				nmg -=b;
				if(nmg <= 0) {
					count = 0;
					break;
				}
				//첫번째 개가 자는 여부 체크
				
			}
			
			
			nmg = man;
			//도착시간 초기화
			//다음 개의 시간이랑 비교하기 위함
			while(true) {
				nmg -= c;
				if(nmg <= 0) {
					count++;
					break;
				}
				nmg -=d;
				if(nmg <= 0) {
					count = 0;
					break;
				}
				//두번째 개가 자는 여부 체크
			}
			
			System.out.println(count);
		}
    }
}

출처링크: www.acmicpc.net/problem/2991

 

2991번: 사나운 개

창영 마을의 우체부, 우유배달원, 신문배달원은 상근이네 집에 가는 것을 매우 싫어한다. 그 이유는 상근이네 집에는 사나운 개 두 마리가 지키고 있기 때문이다. 하지만, 그들은 이 개의 행동

www.acmicpc.net