이번엔 1차원 배열 문제를 정리해보려고 합니다.
사실 제가 자바에서 무엇보다 어려워하는 게 배열 문제라 앞으로는 좀 많이 풀어보고 감을 좀 익혀보려고 합니다.
그래도 뭔가 이해가 잘 되는 느낌은 아니지만요... ㅎㅎ
문제는
https://www.acmicpc.net/problem/1546
여기서 확인하시면 됩니다.
문제풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] avg = new int[n];
int max = -1;
double sum =0.0;
for (int i = 0; i < avg.length; i++) {
avg[i] = sc.nextInt();
if (avg[i] > max) {
max = avg[i];
}
sum += avg[i];
}
System.out.println(((sum/max)*100)/n);
}
}
이번 문제는 첫번째로 입력받은 수 중에서 최댓값을 먼저 뽑아내고 그 이후에 평균을 구하는 문제였습니다.
max = -1로 표시한 이유는 점수는 0점을 포함하고 있기 때문에 입력받을 값이 0보다 크거나 같을 수 있어서입니다.
이렇게 if문을 사용해서 최댓값을 max에 넣은 후 입력받은 모든 수를 더한 sum에서 나누어 주면 됩니다.
이번 문제는 문제를 보고 어떻게 풀어야겠다 가 수학적으로 먼저 떠오르는 문제였습니다 ㅋㅋㅋ 확실히 이런류의 문제들은 수학적으로 풀이를 만들어 놓고 구현하는게 저는 편한거같아요... (음... 앞으로는 수학을 열심히 해야되나....)
(sum / max) * 100이라는 수식은
입력받은 값이 A, B, C라고 했을 때 (max = C라고 가정)
(A/C) * 100 + (B/C) * 100 + (C/C) * 100 => ((A/C) + (B/C) + (C/C))* 100 => ((A + B + C)/C) * 100 이기 때문에
결국 모든 수를 다 더한 (sum/max) * 100이랑 같습니다.
'Algorithm > Baekjoon' 카테고리의 다른 글
[Baekjoon] 백준 4344 평균은 넘겠지 - java (0) | 2021.07.20 |
---|---|
[Baekjoon] 백준 8958 OX퀴즈 - java (2) | 2021.07.19 |
[Baekjoon] 백준 10951 (A + B - 4) - java (0) | 2021.07.15 |
[Baekjoon] 백준 1157 단어공부 - java (0) | 2021.07.12 |
[Baekjoon] 백준 1110 더하기 사이클 - java (0) | 2021.07.11 |