728x90
문제
https://www.acmicpc.net/problem/1546
1546번: 평균
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보
www.acmicpc.net
해결
자바의 배열과, 반복문(for문), 조건문(if문)을 이용해 조작된 성적의 평균을 구하는 프로그램을 작성하였다.
배열의 최댓값과 배열의 총합을 구하는 알고리즘이 필요한 문제였다.
배열의 최댓값 구하기
1. 최댓값을 저장할 변수를 선언하고 0으로 초기화한다.
2. 배열의 길이만큼 for문을 실행한다.
3. i번째 배열의 원소가 최댓값보다 크면 그 값이 최댓값으로 저장되도록 for문 안에 if문을 작성한다.
4. 결국 배열의 원소 중 가장 큰 값이 최댓값 변수에 저장된다.
배열의 총합 구하기
1. 총합을 저장할 변수를 선언하고 0으로 초기화한다.
2. 배열의 길이만큼 for문을 실행한다.
3. 총합 변수에 i번째 원소의 값이 더해지도록 for문 안에 식을 작성한다.
4. 배열의 길이만큼 for문이 실행되므로 총합 변수에 원소의 값이 모두 더해진다.
구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 시험 본 과목의 개수 입력받음
int[] score = new int[n];
for (int i = 0; i < n; i++) {
score[i] = sc.nextInt(); // 현재 성적 입력받음
}
// 최댓값 구하기
int max = 0;
for (int i = 0; i < score.length; i++) {
if (score[i] > max)
max = score[i];
}
// 조작한 성적의 총합 구하기
double newSum = 0;
for (int i = 0; i < score.length; i++) {
newSum += (double) score[i] / max * 100;
}
// 총합을 과목의 개수로 나눠 평균 구하기
double newAvg = newSum / n;
System.out.println(newAvg);
}
}
|
cs |
결과

728x90
'Algorithm > Beakjoon' 카테고리의 다른 글
[Java] baekjoon 2753 : 윤년 / if문 (0) | 2021.07.18 |
---|---|
[Java] baekjoon 9498 : 시험 성적 / if문 (0) | 2021.07.17 |
[Java] baekjoon 1330 : 두 수 비교하기 / if문 (0) | 2021.07.16 |
[Java] baekjoon 10809 : 알파벳 찾기 / 문자열 (0) | 2021.07.15 |
[Java] baekjoon 2902 : KMP는 왜 KMP일까? / 문자열 (0) | 2021.07.14 |
댓글