코딩테스트 연습 기록

이종길·2021년 12월 22일
0

코딩테스트 연습

목록 보기
6/128

2021.12.22 2일차

백준 4344번 (평균은 넘겠지)

문제

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

나의 풀이

  1. 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력 (float)
  2. 둘째 줄에서 처음 학생들 수 - x, x만큼 for문 반복
  3. int 배열해서 성적 합계, 평균 구하기
  4. 평균을 넘은 학생 수 구하기 - Arrays.sort 활용
  5. 평균보다 큰 인덱스 값 - 전체 학생 수 = 평균 넘은 학생 수
  6. 소수점 셋째 자리까리 출력하기 위해 printf 사용
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int c = scanner.nextInt();

        for (int i = 0; i < c; i++) {
            int n = scanner.nextInt();
            int sum = 0;
            int[] scoreArr = new int[n];

            for (int x = 0; x < n; x++) {
                int score = scanner.nextInt();
                scoreArr[x] = score;
                sum += score;
            }
            Arrays.sort(scoreArr);

            float avg = sum / n;

            float index = 0;
            for (int z = 0; z < n; z++) {
                if (scoreArr[z] > avg) {
                    index = n - z;
                    break;
                }
            }
            System.out.printf("%.3f%%\n", index / n * 100);
        }
    }
}

생각하기

  • printf 출력 형식
    %f - 부동 소수점
    %d - 정수
    %s - 문자열
    %c - 문자

  • 반올림
    Math.round() - 소수점 첫째자리 기준으로 반올림 메서드

  • 소수점 지정
    1. Math.round
    2. String.format
    3. NumberFormat

  • sort를 활용해서 정렬된 배열에서 특정 값 이상 인덱스 확인하는 방법
    (이진 탐색)

profile
Go High

0개의 댓글

Powered by GraphCDN, the GraphQL CDN