티스토리 뷰

728x90
총 10000번의 투표를 진행하며 투표는 랜덤으로 진행이 된다.
투표가 진행 되면서 투표 진행율과 투표수 비율을 출력하라.
마지막으로 당선자를 출력하라

 

 

투표 진행

후보자를 관리하기 편하기 위해서 person 이라는 배열을 생성하였다.

후보자는 총 4명 이며, 랜덤으로 투표 진행 하기 위해서 Random().nextInt(4) 를 사용하였다.

Random().nextInt(4) 를 사용하면 0~3의 숫자가 랜덤하게 생성된다.

이때 생성된 수를 result 의 인덱스가 되어 값이 증가 된다. result[vote]++;

 

 

투표 진행율

투표 진행율을 계산하기 위해서는 현재 투표인원 / 전체 인원 * 100 을 해야지 진행율을 계산 할 수 있다.

이때 for 문에 있는 i 는 현재 진행한 투표 인원을 나타내며 0부터 시작하면 진행율에서 계산이 불가하므로 for 문의 i 는 1부터 시작 되어야 한다.

진행율을 소수점으로 나타나기 때문에 계산식에서 double 로 형 변환을 해야지 오류가 발생하지 않는다.

 

 

당선자 발표

10000번의 투표가 진행 후에 최다 득표자를 result 배열에서 뽑아 내야한다.

최다 득표자를 찾기 위해서 배열의 인덱스를 이용한 비교를 이용하여 최다 득표자를 찾았다.

maxIndex 를 처음에는 0으로 초기화 시킨 다음 배열을 비교하는 과정에서 maxIndex 의 값보다 더 큰값이 나오면 그 index 를 maxIndex 에 넣어주었다.

최종 for 문을 나오게 되면 maxIndex 에는 최다 득표자의 index 값을 가지고 있게 된다. 

 

 

 

import java.util.Random;

public class javaStudy06 {
    public static void main(String[] args) {
        String[] person = {"이재명", "윤석열", "심상정", "안철수"};
        int[] result = {0,0,0,0};
        double progress;
        int totalVoter = 10000;

        for (int i = 1; i <= totalVoter; i++) {
            int vote = new Random().nextInt(4); //투표 진행
            result[vote]++;

            progress = i / (double)totalVoter * 100; //진행율

            System.out.printf("[투표진행율]: %.2f%%, %d명 투표 => %s \n",progress, i, person[vote]);
            System.out.printf("[기호:1] 이재명: %.2f%%, (투표수: %d)\n", (double)result[0]/i*100, result[0]);
            System.out.printf("[기호:2] 윤석열: %.2f%%, (투표수: %d)\n", (double)result[1]/i*100, result[1]);
            System.out.printf("[기호:3] 심상정: %.2f%%, (투표수: %d)\n", (double)result[2]/i*100, result[2]);
            System.out.printf("[기호:4] 안철수: %.2f%%, (투표수: %d)\n", (double)result[3]/i*100, result[3]);
        }

        int maxIndex = 0;
        for (int i = 0; i < 4; i++) {
            if(result[i] > result[maxIndex]){
                maxIndex = i;
            }
        }

        System.out.println("[투표결과] 당선인: " + person[maxIndex]);
    }
}

 

 

 

728x90