문제
https://www.acmicpc.net/problem/1546
풀이
방법1.
처음에는 입력을 받으면서 최대값을 구하고,
입력된 모든 값을 점수/M*100으로 고치면서 총합을 구해서 평균을 구했는데 이렇게 되면 for문을 2번 돌게 된다.
방법2.
어차피 (A/M*100+B/M*100+C/M*100)/3 = (A+B+C)/M*100 이니까 for문 한번에 해줄 수 있었다. (2번째 방법)
Java Code (방법1)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class boj_002_1546 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
double[] score = new double[N];
double max = Double.MIN_VALUE;
st = new StringTokenizer(br.readLine());
for (int i = 0; i < score.length; i++) {
score[i] = Double.valueOf(st.nextToken());
max = Math.max(score[i],max);
}
double sum = 0.0;
double[] changedScore = new double[N];
for (int i = 0; i < score.length; i++) {
changedScore[i] = score[i]/max*100;
sum +=changedScore[i];
}
System.out.println(sum/N);
}
}
Java Code (방법2)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class boj_002_1546_2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
double[] score = new double[N];
double max = Double.MIN_VALUE;
double sum = 0.0;
st = new StringTokenizer(br.readLine());
for (int i = 0; i < score.length; i++) {
score[i] = Double.valueOf(st.nextToken());
max = Math.max(score[i],max);
sum += score[i];
}
double answer = sum/max*100/N;
System.out.println(answer);
}
}

'Algorithm > BOJ' 카테고리의 다른 글
| 백준 11660. 구간 합 구하기 5 (Java) (0) | 2022.08.12 |
|---|---|
| 백준 11659. 구간 합 구하기 4 (Java) (0) | 2022.08.12 |
| 백준 11720. 숫자의 합 (Java) (0) | 2022.08.12 |
| 백준 15927. 회문은 회문아니야!!(Java) (0) | 2022.08.11 |
| [백준 2493] 탑 (Java) (0) | 2022.01.05 |