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
'Algorithm > Java' 카테고리의 다른 글
[백준] n.10809 - 한 단어에 있는 알파벳의 위치 찾기 (0) | 2023.05.18 |
---|---|
[백준] n.9086 - 각 문자열의 first, last 문자를 함께 출력하기 (0) | 2023.05.17 |
[백준] n.27866 - 문자열 속 i번째 글자 출력 (0) | 2023.05.16 |
[백준] n.10811 - 바구니 번호 뒤집기 (0) | 2023.05.14 |
[백준] n.3052 - 서로 다른 나머지 개수 구하기 (0) | 2023.05.12 |
댓글