728x90
반응형
[Java] 백준 문제 1546 평균
백준 알고리즘 문제 푸는 사이트에서 문제를 갖고 왔다.
(링크를 안 거는 이유는 링크의 주소가 달라졌을 때 글이 저품질이 걸릴 수 있다기에 걸지 않았다. 구글에서 백준 검색!)
다음은 입출력 조건이다.
여기까지 문제의 설명이다.
입출력 예제를 보고 답을 맞출 수 있도록 코드를 작성한다.
전체 소스 코드
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 입력
int n = sc.nextInt();
double[] sco = new double[n];
for (int i = 0; i < n ; i++)sco[i] = sc.nextDouble();
double sum = 0;
// 처음부터 비교하면서 큰 값 찾거나
// 정렬 후 끝값 -> 최댓값
Arrays.sort(sco);
// 새로운 점수 계산법으로 score reset
for (int j = 0; j < sco.length; j++ )
sum += sco[j] / sco[n-1];
System.out.println( sum / n * 100 );
sc.close();
}
}
코드 풀이
Scanner sc = new Scanner(System.in);
// 입력
int n = sc.nextInt();
double[] sco = new double[n];
for (int i = 0; i < n ; i++)sco[i] = sc.nextDouble();
Java에서 대표적인 입력방법 두 가지 중에 Scanner 클래스를 사용해 입력을 받았다. 더 빠른 속도의 입력이 필요한 경우 BufferedReader 클래스를 사용해서 작성하면 된다.
n 정수를 입력받고, n개 크기의 배열 sco를 세팅한다. 소숫점 계산 부분에서 틀린 값이 나오기도 해서 애초에 double 타입 배열을 선언했다.
그리고 n개 만큼 입력을 받아주었다.
double sum = 0;
// 처음부터 비교하면서 큰 값 찾거나
// 정렬 후 끝값 -> 최댓값
Arrays.sort(sco);
// 새로운 점수 계산법으로 score reset
for (int j = 0; j < sco.length; j++ )
sum += sco[j] / sco[n-1];
System.out.println( sum / n * 100 );
sc.close();
합을 구하고 담기 위한 변수 sum, 그리고 최댓값을 찾기 위해 Arrays.sort()로 정렬을 시켰다. 그럼 마지막 값이 최댓값이 되기 때문이다.
각 점수를 최댓값으로 나눈 합계를 sum에 더해준다.
그리고 평균 구하는 식을 사용한다. sum / n * 100
출력, 그리고 Scanner 객체 소멸로 코드가 마무리 된다.
728x90
반응형
'Algorithm' 카테고리의 다른 글
[Java] 백준 4344 평균은 넘겠지 (0) | 2022.04.25 |
---|---|
[Java] 백문 문제 8958 - OX퀴즈 (0) | 2022.04.23 |
[Java] 백준 문제 3052 - 나머지 (0) | 2022.04.21 |
[Java] 백준 문제 2577 숫자의 개수 (0) | 2022.04.21 |
[Java] 백준 문제 2562 최댓값 (0) | 2022.04.20 |