마음만은 새내기

항상 초심을 잃지 않고 생활하겠습니다~!

프로그래밍/Baekjoon Online Judge

[백준] #13063 : Lobby

동동매니저 2023. 2. 18. 16:56

★ solved.ac 난이도 : B3

(작성 시점 기준)


[문제 본문 링크]

 

13063번: Lobby

There are multiple test cases in the input. Each test case appears in one line containing three space-separated integers n, m and k which respectively are the total number of members, the number of members in the Conservative Party and the number of member

www.acmicpc.net


★ 문제 번역

당신은 의회에서 "보수당"의 일원입니다. "개혁당"이라는 정당이 하나 더 있습니다. 의회의 다른 구성원은 무소속이며 이 두 정당 중 어느 쪽에도 속하지 않습니다. 법안이 표결에 부쳐지면 두 정당의 각 의원은 자신의 정당이 결정한 대로 투표해야 합니다. 그러나 독립 의원은 항상 존재하는 다양한 로비를 기반으로 투표 방법을 결정합니다. 의회는 다수결 원칙(전체 구성원의 절반 이상)을 사용하여 결정을 내립니다.

어떤 법안이 의회에서 표결에 부쳐질 예정이고 당신이 개혁당이 그 법안에 반대한다는 것을 알고 있다고 가정해 봅시다. 당신과 당신의 정당 동료들은 법안이 통과될 수 있도록 충분히 그들이 마음을 바꾸거나 바꿀 수 있도록 무소속 회원들에게 로비를 하기를 원합니다. 귀하의 임무는 법안이 통과되도록 귀하가 원하는 대로 투표해야 하는 독립 회원의 최소 수를 찾는 것입니다.

 

★ 입력 형식

입력은 여러 테스트 케이스가 있습니다. 각 테스트 케이스는 총 구성원 수 N, 보수당 구성원 수 M, 개혁당 구성원 수 K가 공백으로 구분되어 한 줄에 주어집니다. 입력의 마지막 줄에는 '0 0 0'이 주어지며, 이 줄은 처리하지 않습니다.

  • 1 ≤ N, M, K ≤ 1000
  • M+K ≤ N

 

★ 출력 형식

각 테스트 케이스에 대해 법안이 통과되기 위해 원하는 대로 투표해야 하는 독립 구성원의 최소 수를 하나의 줄에 출력합니다. 만약 법안을 통과시킬 방법이 없다면 -1을 출력합니다.


★ 풀이

먼저 개혁당 구성원 수를 확인하고, 절반 이상이면 -1을 출력합니다. 그렇지 않으면 절반에서 보수당 구성원 수를 뺀 다음 1을 더해서 출력합니다. 단, 값이 음수이면 0을 출력해야 합니다.


[소스 코드 (C++98)]

 

공유 소스 보기

 

www.acmicpc.net


★ 틀린 점이 있다면 알려주세요~!