본문 바로가기

TIL/Algorithm

Java 백준 1546번 문제

반응형

문제

세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그러고 나서 모든 점수를 점수/M*100으로 고쳤다.

예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학 점수는 50/70*100이 되어 71.43점이 된다.

세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.

출력

첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대 오차 또는 상대오차가 10-2 이하이면 정답이다.

예제 입력 1 

3

40 80 60

예제 출력 1 

75.0


평균을 구할 때 예제에서 소수점까지 나오기 때문에 double로 num을 지정하였다

 

BufferedReader 클래스를 이용하여 입력값을 받는데,

공백 기준으로 입력값이 들어오기 때문에 StringTokenizer 클래스를 이용하여 값을 나누어 받았다

(이때 num과 마찬가지로 Double.paresDouble로 토큰을 받아 형 변환을 해주었다)

 

첫 줄에 입력받는 테스트 케이스만큼 배열을 형성하고

반복문을 통해

미리 선언한 배열에 입력값들을 담아주었다

 

(max 변수는 삭제해도 됩니다)

 

그리고 최대값을 구하기 위해서 Arrays.sort를 이용하여 오름차순으로 배열을 정렬하였고

 

반복문을 통해서 지문에 나온 조건에 맞게

sum(합계)를 구해주었다

지문 : 각 점수 / 최고 점수 * 100

 

그리고 출력할 때는 평균을 나오게 하기 위해서

총합계 sum에서 배열의 길이(과목 수)를 나누어서 출력하였다 

반응형

'TIL > Algorithm' 카테고리의 다른 글

Java 백준 4344번 문제  (0) 2021.09.28
Java 백준 8958번 문제  (0) 2021.09.27
Java 백준 3052번 문제  (0) 2021.09.25
Java 백준 2577번 문제  (0) 2021.09.24
Java 백준 2562번 문제  (0) 2021.09.23