Computer Science (CS)/알고리즘
[백준/Java] 4344번 평균은 넘겠지
eune7
2023. 5. 11. 13:05
728x90
반응형
문제
정답 풀이
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int C = Integer.parseInt(br.readLine());
int[] arr;
for(int i = 0; i < C; i++){
st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
arr = new int[N];
double avg = 0;
for(int j = 0; j < N; j++){
arr[j] = Integer.parseInt(st.nextToken());
avg += arr[j];
}
avg/=N;
double count = 0;
for(int j = 0; j < N; j++){
if(arr[j] > avg){
count++;
}
}
System.out.printf("%.3f%%\n", (count/N)*100);
}
br.close();
}
}
- 메모리 15500KB
- 시간 176ms
어려운 문제는 아니였던 거 같습니다만
소수점 세째자리까지 출력을 해야하니 자료형 유의해줘야하고
처음 알게 된 부분은 소수점까지 출력할 때 printf를 사용했다는 점이였습니다.
System.out.printf()
ex) System.out.printf("%.3f", result);
result를 소수점 세 째자리까지 float형으로 출력
그럼 실수로 값을 받을 double형말고 float형도 되지 않느냐 라고 생각하실 수 있는데
double보다는 float가 소수점 오차를 비교적 적다고 합니다.
하지만 소수점 오차가 제일 적으면서 실수 표현이 가능한 것은 BigDecimal이 있습니다.
주로 금융권에서 쓰인다고 합니다만,,
알고리즘 푸는데에 double이나 flaot나 제 생각에는 크게 상관없을 거 같습니다! :)
728x90
반응형