반응형
문제
https://www.acmicpc.net/problem/4344
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int test = sc.nextInt(); //테스트 케이스 수
int sum, cnt;
double avg;
for(int i = 0; i < test; i++) { //테스트 케이스 수 만큼 반복
int sNum = sc.nextInt(); //학생 수 입력
int [] arr = new int[sNum]; //학생 수만큼 배열 생성
sum = 0; //성적 합
cnt = 0; //평균 이상 점수를 받은 학생 수 카운트
//성적 입력 및 모든 성적 sum 변수에 저장
for(int j = 0; j < sNum; j++) {
arr[j] = sc.nextInt();
sum += arr[j];
}
//평균 구하기
avg = sum / sNum;
//평균보다 배열의 값(학생의 성적)이 큰 경우 카운트
for(int j = 0; j < sNum; j++) {
if(arr[j] > avg) {
cnt++;
}
}
//퍼센테이지 구하기
double percent = ((double)cnt / (double)sNum) * 100.0;
System.out.println((String.format("%.3f", percent)) + "%");
}
sc.close();
}
}
마무리
헷갈렸던 것
1. nextInt: 띄어쓰기, 개행문자가 나올 때까지 값을 입력받는다.
2. 소수점 아래 n자리까지 출력 방법
https://coding-factory.tistory.com/250
이 외에도 printf 이용해서 c언어처럼 출력할 수도 있다.
ex. System.out.printf("%.3f\n", ((double)cnt / (double)sNum) * 100.0);
//((double)cnt / (double)sNum) * 100.0을 소수점 세자리까지 실수 형태로 출력.
+콘솔창 같은 라인에 있어도 하나는 입력이고 하나는 출력일 수 있는 건데 모두 출력이라고 생각하고 학생수까지 배열에 꾸역꾸역 넣으려다 보니 문제도 안 풀리고 시간만 많이 썼다.
유도리 있게 생각하도록 노력하자!
반응형
'Problem Solving > 백준' 카테고리의 다른 글
[백준 알고리즘] 11654: 아스키 코드 풀이(자바) (0) | 2021.08.25 |
---|---|
[백준 알고리즘] 1065: 한수 풀이(자바) (0) | 2021.08.25 |
[백준 알고리즘] 15596: 정수 N개의 합 풀이(자바) (0) | 2021.08.03 |
[백준 알고리즘] 8958: OX퀴즈 풀이(자바) (0) | 2021.08.02 |
[백준 알고리즘] 1546: 평균(자바) (0) | 2021.08.01 |
[백준 알고리즘] 3052: 나머지 풀이(자바) (0) | 2021.08.01 |