일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 20117
- BOJ
- 사이클 없는 그래프
- c++ #boj #
- c++ #입출력 #속도 #ios #sync_with_stdio #cin #cout #tie
- LIS #가장긴증가하는부분수열 #
- backtracking #codetree #디버깅 #삼성코테
- hcpc
- 레드아보
- 줄어드는수
- 16202
- 코딩
- 투포인터 #백준 #boj #20922 #22862
- 이분탐색 #dp #11053
- graph
- C++
- boj #백준
- 22869
- 백준 #다익스트라 #dijkstra #9370 #c++
- 쌤쌤쌤
- 30870
- 3343
- 백준
- N번째큰수
- 최소 #공배수 #최대 #공약수 #유클리드 #호제법 #lcm #gcd #c++ #boj #3343 #백준 #장미
- 1174
- graph #최단경로
- 호반우 상인
- 진법변환 #2to10 #10to2 #이진법 #십진법 #변환 #bitset #c++
- 3D #Reconstruction #computer #vision #volume #metric #tsdf #kinect #fusion
- Today
- Total
hyunjin
[4344]평균구하기 다시!! 본문
문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
<분석>
읽고 배열에 넣기 어떤 방식으로 할지 굉장히 고민된다.
일단 scanf로 읽는 게 아니고 한줄 읽어 토큰으로 나눌지 한 줄읽어 나눌지 고민된다.
결국 자바로 하기로 했다.
c로는 어떻게 해야할지 fgets이런 걸로 읽어와야서 분리하고 해야하는 건지
상관이 없나?? 그냥 scanf로 읽어와도?? -> 상관은 없네. 문제 제대로 읽자 구하는게 뭔지
결국 자바로 했다.
*자바의 소수점 n번 째 자리까지 나타내기 *
1. String.format()
---> String 클래스의 format 메소드는 리턴되는 문자열 형태를 지정하는 함수
---> 이를 활용하면 소수점 n번째 자리까지 반올림하여 나타낼 수 있음.
2. 출력 서식 이용 - > System.out.printf("출력서식", 출력할 내용);
---> %[.m]지시자
: 소수점 아래 자리수 지정. 잘리는 소수점 자리수는 반올림 시켜서 표시
System.out.println(String.format("%.3f",result[i]) + "%");
<코드>
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int caseNum = scan.nextInt();
float average;
float [] result = new float [caseNum];
int num,sum,count,score[] ;
for(int i = 0 ; i < caseNum; i++ ) {
sum = 0;
num = scan.nextInt();
score = new int [num];
for(int j = 0 ; j < num ; j++) {
score[j] = scan.nextInt();
sum += score[j];
}
average = (float)sum / num;
count = 0;
for(int j = 0; j < num ; j++)
if(score[j]>average) count++;
result[i] = (float)count/num*100;
}
for(int i = 0 ; i< caseNum;i++)
System.out.println(String.format("%.3f",result[i]) + "%");
}
}
'알고리즘 연습 > 백준' 카테고리의 다른 글
[4673][c]셀프 넘버 (0) | 2019.03.20 |
---|---|
[1110]더하기 사이클 (0) | 2019.03.20 |
[1546]시험 점수 조작-malloc,calloc,realloc (0) | 2019.03.19 |
[2839]설탕 배달 (0) | 2019.03.19 |
[1924]2007년 (0) | 2019.03.19 |