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
반응형
'Computer Science (CS) > 알고리즘' 카테고리의 다른 글
[백준/Java] 1316번 그룹 단어 체커 (0) | 2023.05.11 |
---|---|
[백준/Java] 2941번 크로아티아 알파벳 (0) | 2023.05.11 |
[백준/Java] 1157번 단어 공부 (0) | 2023.05.09 |
[백준/Java] 10988번 팰린드롬인지 확인하기 (0) | 2023.05.09 |
[백준/Java] 10812번 바구니 순서 바꾸기 (0) | 2023.05.07 |