Algorithm/Java
[백준] n.1546 - 조작된 평균 구하기
보라해바라기
2023. 5. 15. 10:01
SMALL
1. 문제
https://www.acmicpc.net/problem/1546
1546번: 평균
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보
www.acmicpc.net
- 조작된 평균 : (점수/점수 최댓값)*100
2. 주요 개념
- 1차원 배열
- float 와 연산자의 관계
- 스캐너
- 최댓값 구하는 알고리즘
3. 나의 풀이 (*은 잘 안풀린 부분)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n, i;
n = s.nextInt();
// n: 시험 과목 갯수
float max = 0;
// max: 시험 최댓값 (**float)
// 최댓값 기본은 0으로 설정
float sum = 0;
// sum: 조작된 점수의 합 (**float)
//**float
// why? int에서 "/" 사용하면 정수 값 출력
// 우리는 소수값 필요 (float 사용해야 출력 可)
float[] score = new float[n];
float[] score_new = new float[n];
for (i=0; i<n; i++) {
score[i] = s.nextFloat();
// float 형태로 값 받아주기!
}
for (i=0; i<n; i++) {
if (max <= score[i]) {
max = score[i];
}
}
for (i=0; i<n; i++) {
score_new[i] = (score[i]/max)*100;
// System.out.println(score_new[i]);
sum += score_new[i];
}
System.out.println(sum/n);
}
}
4. 짚고 넘어가기!
- int 사용 시, 정수/정수 = 정수
- 우리는 나누기 연산 시, 소수점을 구하려고 함 (ex. 40/80 = 0.5 ..)
- float를 이용하여야 소수점 구하기 가능!
> 시험 점수와 관련된 모든 요소들을 float 형태로 생성
> 시험 점수 s.nextFloat()
> 점수 들어가는 배열 float[] score = new float[n]
> 조작된 점수가 들어가는 배열 float[] score_new = new float[n]
728x90