SWEA(SWExpertacAdemy)

[SWEA] 5601. [Professional] 쥬스 나누기 (자바)

심층코드 2025. 5. 12. 22:45

5601. [Professional] 쥬스 나누기 D3

 

N명의 사람이 1리터의 쥬스를 나누어 각자 잔에 따라서 마시고자 한다.

그런데 한사람이 따르고 분배하는 것은 공평하지 않기 때문에 다음 방법을 통해 쥬스를 나눠 마시기로 하였다.



첫번째 사람이 원하는 만큼 한잔 따르고, 두번째 사람이 원하는 만큼  한잔 따르고, ..., N번째 사람이 남은만큼 한잔 따른다.

그 후 N번째 사람이 N개의 잔 중에 하나를 가져가고, N-1번째 사람이 남은 잔 중에 하나를 가져가고, 최종적으로 첫번째 사람이 마지막으로 남은 잔을 가져간다.



모든 사람은 목이 마른 상태이기 때문에, 최대한의 쥬스를 마시고자 최선의 전략을 쓴다고 가정하자.

또한 이들은 서로 모르기 때문에, 담합 혹은 협력 등은 없다고 가정하자.

이때 첫번째 사람부터 N번째 사람까지 각각 쥬스를 얼마씩 마시게 되는지 구하도록 하자.



[입력]

첫 줄에 테스트케이스의 개수 T가 주어진다. (1 ≤ T ≤ 20)

각 줄에 테스트케이스가 주어지는데, N이 입력으로 들어온다. ( 1 ≤ N ≤ 1000 )



[출력]

각 테스트케이스마다 한 줄에 걸쳐, 테스트케이스 수 “#(TC) “를 출력하고, 각 사람이 마시게 될 쥬스의 양을 공백을 두고 출력한다.

쥬스의 양은 정수가 아니기 때문에, 기약분수로 만들어 "p/q" 꼴로 출력하도록 한다.

 

입력
2
1
2
// 전체 테스트케이스 개수
// 첫 번째 TC의 사람의 수 N
// 두 번째 TC의 사람의 수 N
 
출력
#1 1/1
#2 1/2 1/2
// 1번 TC 결과
// 2번 TC 결과

 

[코드]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T=Integer.parseInt(br.readLine());
		for (int i = 1; i <= T; i++) {
			int A=Integer.parseInt(br.readLine());
			System.out.print("#"+i+" ");
			for (int j = 0; j < A; j++) {
				System.out.print("1/"+A+" ");
			}
			System.out.println();
		}
		br.close();
	}

}