반응형

@notepad_jj2

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


1. [백준 알고리즘] 백준 15921번 수찬은 마린보이야!! 자바(JAVA)

1) 문제번호 : 15921번

 

2) 문제 출처

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

 

15921번: 수찬은 마린보이야!!

기댓값 E(X)의 정의는 ‘각 사건이 벌어졌을 때의 이득과 그 사건이 벌어질 확률을 곱한 것을 전체 사건에 대해 합한 값’이다. 다시 말해, 어떤 수 x가 수열에 등장할 확률 P(x) = (x의 등장 횟수) /

www.acmicpc.net

 

2. 문제

부산의 자랑! 동래의 희망! 부산 앞바다에서 수영선수의 꿈을 키워온 수찬이는 우리나라(자투리 지식: 우리 한민족이 세운 나라를 스스로 이르는 말은 합성어로서 ‘우리나라’로 붙여 표기)의 자랑스런 국가대표 수영선수가 되었다.

수찬이는 인터넷 뉴스를 통해 이번 2020 도쿄 하계올림픽 관련 전문가들의 인터뷰를 찾아보고 있다. 자신을 교수라고 소개한 어떤 전문가에 따르면, 유럽의 유명 대학 연구팀의 연구 결과에 따르면, 통계적으로 어떤 선수가 대회에서 연습과 비슷하게 꾸준한 기량을 뽐낼 수 있는 확률은 (연습 기록들의 평균값) / (연습 기록들 중 하나를 균일한 확률로 뽑을 때의 기댓값) 이라고 한다.

수찬이는 이 기사를 읽고 무릎을 탁(!) 치며 자신의 연습 기록을 가지고 이 확률을 계산해보기로 했다. 수찬이가 꾸준한 기량을 뽐낼 수 있는 확률은 얼마일까?

 

3. 제약사항

 

4. 입력

첫째 줄에 수찬이의 연습 기록의 개수 N이 주어진다. (0 ≤ N ≤ 100)

둘째 줄에 수찬이의 연습 기록 N개가 주어진다. N이 0이면 아무것도 주어지지 않으며 연습 기록은 100 이하의 양의 정수이다.

 

5. 출력

문제에서 제시한 확률을 소수 셋째 자리에서 반올림하여 소수 둘째 자리까지 출력한다. N이 0이거나 분모가 0인 경우에는 “divide by zero”를 출력한다.

 

6. 풀이

- 평균 / 기댓값을 하여 출력하면 된다.

 

7. 소스 코드

import java.io.*;
import java.util.*;

public class Main {
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	
	static int[] num; // 수찬이의 연습 기록 저장 배열
	static int sum = 0; // 합
	public static void main(String[] args) throws IOException {
		int N = Integer.parseInt(br.readLine()); // 수찬이의 연습 기록의 개수
		
		// N이 0일 때 처리
		if(N==0) {
			System.out.println("divide by zero");
			System.exit(0);
		}
		
		num = new int[N]; // 수찬이의 연습 기록 저장 배열
		
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		
		//수찬이의 연습 기록 배열에 저장하면서 합 구하기
		for(int i=0;i<N;i++) {
			int temp = Integer.parseInt(st.nextToken());
			num[i] = temp;
			sum += temp;
		}
		
		double average = (double)sum / N; // 평균구하기
		double Ex = 0; // 기댓값
		
		// 기댓값 구하기
		for(int i=0;i<N;i++) {
			int start = num[i];
			Ex += (start *((double)1 / N));
		}
		
		if(Ex==0) System.out.println("divide by zero");
		else System.out.printf("%.2f",average/Ex);
	}
}

 


 

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