반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준] 백준 27736번 찬반투표 자바(JAVA)

1) 문제번호 : 27736

 

2) 문제 출처

https://www.acmicpc.net/problem/27736

 

27736번: 찬반투표

투표가 통과되었으면 APPROVED, 통과되지 않았으면 REJECTED, 무효 처리되었으면 INVALID를 출력한다.

www.acmicpc.net

 

2. 문제

중앙대학교에서 재학생을 대상으로 하는 어떤 찬반투표가 치러졌다. 모든 재학생은 각자 찬성이나 반대, 혹은 기권 중 하나로 투표에 응답하였다.

해당 투표에서 찬성이 반대보다 많으면 투표가 통과된다. 반대가 찬성보다 많거나, 반대와 찬성의 수가 동일하다면 투표는 통과되지 않는다. 단, 기권한 사람이 재학생의 절반 이상이라면 찬성과 반대의 수와 관계없이 항상 투표는 무효 처리된다.

재학생들의 투표 내역을 입력받아 찬반투표의 결과를 출력하는 프로그램을 구현하시오.

 

3. 제약사항

 

4. 입력

첫 번째 줄에 중앙대학교 재학생의 수 이 주어진다.

두 번째 줄에 개의 투표 내역이 공백으로 구분되어 주어진다. 각각 찬성은 1, 반대는 -1, 기권은 0으로 주어진다.

 

5. 출력

투표가 통과되었으면 APPROVED, 통과되지 않았으면 REJECTED, 무효 처리되었으면 INVALID를 출력한다.

 

6. 풀이

- 값을 입력 받고, 투표에 대한 결과를 result 변수에 담는다.

- result가 1일 경우, -1일 경우, 0일 경우를 각 A, R, I에 수를 더한다.

- 기권표가 투표자 수의 절반 이상이면 무효라고 했으므로, N이 2로 나눠 떨어지지 않을 경우에는 1을 더해서 절반 이상을 만들어 주고, 나눠 떨어지면 그대로 사용하면 된다.

- 그래서, 대소비교를 통해 각 상황에 맞게 출력을 하면 된다.

 

7. 소스 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int A = 0;
		int R = 0;
		int I = 0;
		
		for(int i = 0; i < N; i++) {
			int result = Integer.parseInt(st.nextToken());
			
			if(result == 1) {
				A++;
			} else if(result == -1) {
				R++;
			} else {
				I++;
			}
		}
		
		int M = 0;
		if(N % 2 != 0) {
			M = (N / 2) + 1;
		} else {
			M = N / 2;
		}
		
		if(I >= M) {
			System.out.println("INVALID");
			return;
		}
		
		if(A > R) {
			System.out.println("APPROVED");
		} else {
			System.out.println("REJECTED");
		}
		
	}
}

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기