가상 대선 당선 시뮬레이션 프로그램

- 수행 목적 : 조건문 및 반복문과 배열을 통한 당선 시뮬레이션 로직 작성

- 간략 소개 : 올해는 대통령 선거가 있는 해입니다. 이에 대한 가상 시뮬레이션을 통해서 당선인을 결정하는 시뮬레이션 프로그램을 작성해 보세요.

 

※ 필수 준수사항

1. 기호 1번 이재명, 기호 2번 윤석열, 기호 3번 심상정, 기호 4번 안철수 순으로 진행

2. 총 투표수 10,000건 진행

3. 각 투표수의 결과는 4명의 대선주자들이 동일한 비율로 랜덤하게 발생(단, 당선자는 동율이 안됨)

4. 임의 번호는 Random 함수의 nextInt() 함수를 통해 생성

 


작성 코드

// 가상 대선 당선 시뮬레이션 프로그램

import java.util.Random;

public class vote {
    public static void main(String[] args) {
        Random rnd = new Random();

//        String[] name = new String[4];
//        name[0] = "이재명";
//        name[1] = "윤석열";
//        name[2] = "심상정";
//        name[3] = "안철수";

        String[] name = {"이재명", "윤석열", "심상정", "안철수"};
        int voter = 10000; // 투표자
        int[] votenumber = new int[4]; // 득표수

        for (int i = 1; i <= voter; i++) {
            int member = rnd.nextInt(4); // 랜덤으로 투표 (0~3사이의 랜덤 수)
            double voterturnout = i / (double)voter * 100; // 투표율

            votenumber[member]++; // 해당 후보 투표수 + 1
            //투표진행률
            System.out.printf("[투표진행율]:%.2f%%, %d명 투표 => %s", voterturnout, i, name[member]);

            //후보별 투표 진행률
            for (int j = 0; j < name.length; j++) {
                System.out.println();
                System.out.printf("[기호:%d] %s: %.2f%%, (투표수: %d)", j + 1, name[j], votenumber[j] / (double)voter * 100, votenumber[j]);
            }
            System.out.println();
        }

        // 가장 많은 득표를 받은 후보 구하기
        int max = votenumber[0];
        int maxfinal = 0;
        for (int i = 0; i < name.length; i++) {
            if (votenumber[i] > max) {
                max = votenumber[i];
                maxfinal = i;
            }
        }
        System.out.println("[투표결과]당선인 :" + name[maxfinal]);
    }
}

https://gist.github.com/coha96/4cfe52707ec7a162e2e4092b05fec823


GoodNotes