https://www.acmicpc.net/problem/4344
4344번: 평균은 넘겠지
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
www.acmicpc.net
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
32
33
34
35
|
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
int m = sc.nextInt();
ArrayList<Integer> numList = new ArrayList();
for (int j = 0; j < m; j++) {
numList.add(sc.nextInt());
}
int sum = 0;
for (int num : numList) {
sum += num;
}
double average = sum / m;
int cnt = 0;
for (int num: numList) {
if (num > average) {
cnt += 1;
}
}
double result = (double)cnt*100/m;
System.out.println(String.format("%.3f",result)+"%");
}
}
}
|
cs |
처음에 아래와 같이 코드를 짰다가 엄청 헤맸다...
1
|
double result = cnt*100/m;
|
cs |
자바에서 정수 / 정수는 정수로만 반환된다는 사실을 알게 됐다. 나는 소수 부분까지 필요하기 때문에 result를 double로 선언해줬다. 그러면 자연스래 식의 결과값이 double로 반환될 줄 알았다. 그럼에도 결과는 계속 정수까지만 반환되었다. 한참 헤매다 식 앞에도 타입 선언을 해줘야 변환된다는 사실을 깨달았다.
추가로 자바에서 반올림은 String.format으로 표현할 수 있다.
자바는 참 배울게 많은 어려운 언어인 것 같다.
'코테' 카테고리의 다른 글
[백준 / Java] 1065번 : 한수 (0) | 2023.02.08 |
---|---|
[백준 / Java] 4673번 : 셀프 넘버 (0) | 2023.02.07 |
[백준 / Java] 8958번 : OX퀴즈 (0) | 2023.02.06 |
[백준 / Java] 10818번 : 최소, 최대 (0) | 2023.02.05 |
[백준 / Python] 2108번 : 통계학 (1) | 2023.02.03 |