-
[백준] 1546번 _ 평균 (BufferedReader 풀이)[ DEV ] Backend/브론즈 마스터하기 2022. 7. 24. 23:39
https://www.acmicpc.net/problem/1546
1546번: 평균
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보
www.acmicpc.net
💻 BufferedReader 풀이
-문제를 잘못 이해하는 바람에 오류 찾느랴 오~~~~래 걸렸던 문제.
잘못 이해한 포인트는 여기다.
=> 모든 점수에 대해 위와 같은 방법 ( 원래 점수 / 최고점 * 100) 을 적용해줘야함.
나는 세준이의 최고점을 기준으로 새 점수를 만든다고 생각이 들어서 최고점 제외한 나머지 점수들에 대해 성적을 고쳤던 것.
문제를 다시 읽고, 주어진 점수 모두 위에 나와있는 방법으로 점수를 수정했더니 정답처리를 받을 수 있었음.
💡주의사항
-소수점으로 출력을 해야 하기 때문에 double 을 사용해주기.
그리고 arr배열에서 Tockenizer 사용해서 입력받을 때도, Double 사용하기!
이때는 대문자 Double로 받아주기!! 꼭!
arr[i] = Double.parseDouble(st.nextToken());
import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); //시험 본 과목의 개수 입력받고, arr배열에 크기 설정해주기 double[] arr = new double[Integer.parseInt(br.readLine())]; // 점수 입력 받기 (StringTokenizer 를 이용해서 공백 숫자 구분해서 배열에 넣어주기 StringTokenizer st = new StringTokenizer(br.readLine(), " "); for (int i = 0; i < arr.length; i++) { arr[i] = Double.parseDouble(st.nextToken()); } //합 구하기 double sum = 0; //배열 오름차순 정렬 Arrays.sort(arr); //성적 고치고 바로 배열에 재 정렬 for (int i = 0; i < arr.length; i++) { sum += ((arr[i] / arr[arr.length - 1]) * 100); //System.out.println(arr[i]); } System.out.println(sum / arr.length); //System.out.println(sum); } }
'[ DEV ] Backend > 브론즈 마스터하기' 카테고리의 다른 글
[백준] 10951번 _ A+B - 4 (자바) (0) 2022.07.25 [백준] 10952번 _ A+B - 5 (자바) (0) 2022.07.25 [백준] 8958번 _ OX 퀴즈 (자바_BufferedReader) (0) 2022.07.24 [백준] 4344번 평균은 넘겠지 (0) 2022.07.24 [백준] 1110번 _더하기 사이클 (자바) BufferedReader 사용 (0) 2022.07.17