SMALL
1. 문제
https://www.acmicpc.net/problem/4344
4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
2. 주요 개념
- float 배열
- String.format()
- 리스트 (ArrayList)
- list.add, list.clear, list.get(i)...
3. 나의 풀이 (*은 잘 안풀린 부분)
import java.io.*;
import java.util.*;
// 비율: 반올림하여 소수점 셋째 자리까지 출력
class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int c, n;
float score = 0;
float sum = 0;
c = s.nextInt();
// 테스트 케이스 개수
ArrayList<Integer> list = new ArrayList<Integer>(); // 각 학생 수
ArrayList<Float> score_list = new ArrayList<Float>(); // 각 학생의 점수
float[] avg = new float[c];
float[] ratio = new float[c];
for (int t = 0; t < c; t++) {
avg[t] = 0;
ratio[t] = 0;
} // 배열 초기화
for (int i = 0; i < c; i++) {
n = s.nextInt(); // 학생 수 입력
list.add(n);
for (int j = 0; j < n; j++) {
score = s.nextFloat(); // 점수 입력
score_list.add(score);
sum += score; // 점수 합
}
avg[i] = sum / n; // 평균 값 저장
for (int b = 0; b < n; b++) {
if (score_list.get(b) > avg[i]) {
ratio[i]++; // 평균 넘는 사람의 수 체크
}
}
ratio[i] = (ratio[i] / n) * 100;
System.out.println(String.format("%.3f", ratio[i]) + "%"); // * 소수점 셋째짜리 반올림 포맷
sum = 0; // sum 값 초기화
score_list.clear(); // * score_list를 비워줘야 함! > 그래야 반복문마다 새로운 score_list가 저장됨.
}
}
}
4. 짚고 넘어가기!
- String.format("포맷 형식", 변수) > 변수를 포맷 형식으로 바꾸어줌 (String 형태로 바뀜)
- score_list.clear() > 리스트 값 지움! (반복문마다 학생 점수 값 넣을 수 있도록 비워줌)
- 소수점을 위해서는 float 형 사용!
728x90
'Algorithm > Java' 카테고리의 다른 글
[백준] n.1157 - 가장 많이 사용된 알파벳 출력 (0) | 2023.05.27 |
---|---|
[백준] n.10988- 문자열을 거꾸로 뒤집어도 원래 문자열과 동일한지 확인하기 (0) | 2023.05.26 |
[백준] n.2444 - 마름모모양 별 찍기 (중앙 정렬, 규칙에 따라) (0) | 2023.05.25 |
[백준] n.11718 - 입력 값 그대로 출력하기 (0) | 2023.05.24 |
[백준] n.5622 - 다이얼에 해당하는 문자 식별&사용 시간 구하기 (0) | 2023.05.23 |
댓글