티스토리 뷰
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
'Algorithm > Solve Problem' 카테고리의 다른 글
Java - 다양한 별 출력 (반복문 연습) (0) | 2022.11.08 |
---|---|
Java - 로또 당첨 프로그램 (0) | 2022.11.07 |
Askii code 를 이용한 대소문자 변환 프로그램 (0) | 2022.11.04 |
숫자 거꾸로 출력하기 (JAVA) (0) | 2022.11.04 |
JAVA - LocalDate 를 이용하여 달력 만들기 (0) | 2022.11.04 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 제로베이스 백준 장학금
- 알고리즘 공부
- 주니어 개발자 취업 준비
- 알고리즘공부
- 개발자 취업 준비
- 취업준비
- 프로그래머스 카카오
- 백엔드 개발자 기술 면접 준비
- 백엔드 개발자
- java
- 개발자 취준
- 프로그래머스 자바
- 취준
- 자바
- 백엔드 개발자 취업 준비
- 자바공부
- 알고리즘
- 코테공부
- 코딩테스트공부
- 취업 준비
- 개발자 면접 준비
- 프로그래머스
- 기술 면접 준비
- 백준
- 코딩테스트 공부
- 코딩테스트
- 코테 준비
- 제로베이스 백엔드 스쿨
- 코딩테스트 준비
- 코테준비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함