관리 메뉴

NineTwo meet you

[백준/자바/파이썬] 2599 짝 정하기 본문

프로그래밍 문제/백준

[백준/자바/파이썬] 2599 짝 정하기

NineTwo 2020. 8. 2. 20:15
반응형

출처


문제

어떤 시골의 중학교에는 부근의 3개 초등학교를 졸업한 남녀 학생들이 입학한다.

1학년 1반을 맡게 된 김갑동 선생님은 자기 반에 배정된 학생들을 대상으로 하여 짝을 정하려고 한다.

1학년 1반에 배정 된 학생들은 남자와 여자가 각각 N 명씩이다. 김갑동 선생님은 서로 모르는 학생끼리 짝이 되도록 하기 위해 같은 초등학교 출신이 아닌 남학생과 여학생을 짝으로 정하기로 원칙을 세웠다.

예를 들어, 다음 표와 같이 1학년 1반에 학생들이 왔다고 하자.

 

 

위의 경우에는 다음과 같이 짝을 하면 서로 다른 초등학교 출신의 남녀 학생들로 짝을 정할 수 있다.

A초등 남학생 3명과 B초등 여학생 3명

A초등 남학생 1명과 C초등 여학생 1명

B초등 남학생 1명과 A초등 여학생 1명

C초등 남학생 1명과 A초등 여학생 1명

김갑동 선생님의 문제를 해결하는 프로그램을 작성하시오.

입력

첫 줄에는 남학생 (또는, 여학생) 수를 나타내는 정수 N (3≤N≤100,000)이 주어진다.

둘째 줄에는 A초등학교 출신의 남학생 수와 여학생 수가 주어진다.

셋째 줄에는 B초등학교 출신의 남학생 수와 여학생 수가 주어진다.

넷째 줄에는 C초등학교 출신의 남 학생 수와 여학생 수가 주어진다. 모든 학생수는 0 이상이다.

출력

김갑동 선생님의 원칙대로 모든 학생들의 짝을 정할 수 있으면 첫 줄에 1을 출력하고, 그렇지 않으면 0을 출력한다.

첫 줄에 1을 출력한 경우는, 

둘째 줄에 A초등 남학생과 B초등 여학생의 짝 수A초등 남학생과 C초등 여학생의 짝 수를, 

셋째 줄에 B초등 남학생과 A초등 여학생의 짝 수B초등 남학생과 C초등 여학생의 짝 수를, 

넷째 줄에 C초등 남학생과 A초등 여학생의 짝 수C초등 남학생과 B초등 여학생의 짝 수를 출력한다. 

숫자와 숫자 사이에는 빈칸을 하나 둔다.

짝 정하는 방법이 여럿인 경우에는 아무거나 한 방법을 출력한다.


풀이

계산 순서

파란색 - 현재 구하는 값

노란색 - 파란색을 구하기 위해 필요한 값으로 바로 이전에 구한 값을 의미한다.

 

1. A남자와 B여자가 짝이 되는 수를 i로 0부터 A남자의 수만큼 반복문을 시행한다. 

 

 

 

2. A남자와 C여자가 짝이 되는 수 = A남자의 수 - A남자와 B여자와 짝이 되는 수(= i)

 

 

 

3. B남자와 C여자가 짝이 되는 수 + A남자와 C여자가 짝이 되는 수 = C여자의 총 수

즉, B남자와 C여자가 짝이 되는 수 =  C여자의 총 수 - A남자와 C여자가 짝이 되는 수

 

 

4. B남자와 A여자가 짝이 되는 수 + B남자와 C여자가 짝이 되는 수 = B남자의 총 수

즉, B남자와 A여자가 짝이 되는 수 = B남자의 총 수 - B남자와 C여자가 짝이 되는 수 

 

 

5. C남자와 A여자가 짝이 되는 수 + B남자와 A여자가 짝이 되는 수 = A여자의 총 수

즉, C남자와 A여자가 짝이 되는 수 = A여자의 총 수 - B남자와 A여자가 짝이 되는 수 

 

 

6. C남자와 B여자가 짝이 되는 수 + C남자와 A여자가 짝이 되는 수 = C남자의 총 수

즉, C남자와 B여자가 짝이 되는 수 = C남자의 총 수 - C자와 A여자가 짝이 되는 수

 

 

코드 python / java

 

반응형
Comments