백준 BaekJoon 2942번: 퍼거슨과 사과 [Java] 자바

2020-11-25


문제

맨체스터 유나이티드의 감독 퍼거슨은 빨간 사과를 R개, 초록 사과를 G개 가지고 있다. 훈련장에 있는 선수들 중 몇 명에게 나누어 주려고 한다. 단, 선수들이 서로 같은 개수의 사과를 받지 못하면 경기력 저하가 나타날 수 있으므로 모든 선수에게 같은 개수를 주려고 한다. 퍼거슨 감독은 사과를 싫어한다. 따라서 사과가 남으면 안 된다.

 

예를 들어, 퍼거슨이 빨간 사과를 4개, 초록 사과를 8개 가지고 있다면, 다음과 같이 세가지 방법으로 나누어 줄 수 있다.

  1. 선수 1명에게 빨간 사과 4개와 초록 사과 8개를 줄 수 있다.
  2. 선수 2명에게 빨간 사과 2개와 초록 사과 4개를 각각 줄 수 있다.
  3. 선수 4명에게 빨간 사과 1개와 초록 사과 2개를 각각 줄 수 있다.

퍼거슨이 사과를 나누어 주는 방법을 구하는 프로그램을 작성하시오. 훈련장에 선수는 무한히 많다.

입력

첫째 줄에 R과 G가 주어진다. (1 ≤ R, G ≤ 1,000,000,000)

출력

퍼거슨이 사과를 나누어 주는 방법을 출력한다. 방법을 출력할 때는 사과를 받게되는 선수의 수 N과 나누어 주는 빨간 사과의 수 X와 초록 사과의 수 Y를 출력한다.

각 방법은 한 번만 출력해야 한다. 나누어 주는 방법은 아무 순서로 출력해도 된다.


import java.util.Scanner;

public class TemplateA {
    public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		
		int redApple = scan.nextInt();
		int greenApple = scan.nextInt();
		int player = 1;
		//선수의 수 초기 값 1명 부터 시작
		
		while(player <= redApple || player <= greenApple) {
			//선수가 둘의 사과중 적은 사과의 갯수보다 작거나 같을때까지만 반복
			if(redApple % player == 0 && greenApple % player == 0) {
				System.out.println(player + " " + redApple / player + " " +  greenApple / player);
			//공평하게 나누기 위해서 사과를 선수수로 나누었을때 0의 값이 나와야함
			}
			player++;
			//선수를 한명씩 추가해서 비교해봄
		}
    }
}

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

 

2942번: 퍼거슨과 사과

맨체스터 유나이티드의 감독 퍼거슨은 빨간 사과를 R개, 초록 사과를 G개 가지고 있다. 훈련장에 있는 선수들 중 몇 명에게 나누어 주려고 한다. 단, 선수들이 서로 같은 개수의 사과를 받지 못하

www.acmicpc.net