[백준] 10039번 : 평균 점수 - JAVA [자바]
https://www.acmicpc.net/problem/10039
-
문제
매우 간단한 문제다!
※ 주의할 점
- 40점 미만의 학생들은 어떠한 경우에도 40점을 받게 된다.
- 입력은 항상 다섯 줄이다.
- 2가지 풀이방법을 제시한다.
알고리즘은 그렇게 어렵지 않다. 그렇기에 알고리즘 설명보다는 Scanner 와 BufferedReader 을 사용하여 풀이 한 것을 보여줄 것이다.
- 풀이
- 방법 1
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int sum = 0 ;
for(int i = 0; i < 5; i++) {
int val = in.nextInt();
sum += val > 40 ? val : 40;
/*
if(val > 40){
sum += val;
} else {
sum += 40;
}
*/
}
System.out.println(sum/5);
}
}
가장 기본적인 방법이라 할 수 있겠다.
먼저 5명의 성적을 입력받기 때문에 반복문을 5번 반복해준다.
다음으로 nextInt() 을 통해 각 성적을 val 에 저장한 뒤, 이 입력 값이 40 을 넘을 경우 sum += val 로 누적합을 해주고, 40 을 못 넘을 경우 sum += 40 을 해주면 된다.
필자는 삼항연산자로 하는게 편해서 풀이했으나, 혹시 이해가 안된다면 주석에 있는대로 짜도 된다.
그리고 마지막에는 5로 나눠주면 평균점수가 출력되겠다.
- 방법 2
기본적인 알고리즘은 똑같고 입력방법만 달리하여 풀이한 방법이다.
Scanner 보다 BufferedReader 가 더욱 빠르기 때문에 시간을 단축시키는데 관심있는 분들이라면 아래 코드를 보면 된다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int sum = 0 ;
for(int i = 0 ; i < 5 ; i ++) {
int val = Integer.parseInt(br.readLine());
sum += val > 40 ? val : 40;
/*
if(val > 40){
sum += val;
} else {
sum += 40;
}
*/
}
System.out.println(sum/5);
}
}
※ 참고로 BufferedReader.readLine() 은 문자열을 그대로 읽기 때문에 Integer.parseInt() 로 문자열에서 int 형으로 바꾸어주어야 한다는 것을 명심해라.
- 성능
위에서 부터 순서대로
채점 번호 : 18397567 - BufferedReader
채점 번호 : 18397552 - Scanner
입력의 경우 확실히 Scanner 보다는 BufferedReader 가 빠른 걸 볼 수 있다.
- 정리
이번에 백준에서 실습1 카테고리가 업데이트 되면서 나온 문제다.
주 실습 내용들은 if, for, while 등을 사용하면서 실습하는 것이기 때문에 이전까지의 문제들을 풀었다면 어렵지 않게 풀었을 것이다.
'JAVA - 백준 [BAEK JOON] > 기타 문제' 카테고리의 다른 글
[백준] 2446번 : 별 찍기 - 9 - JAVA [자바] (6) | 2020.03.13 |
---|---|
[백준] 2523번 : 별 찍기 - 13 - JAVA [자바] (0) | 2020.03.13 |
[백준] 5543번 : 상근날드 - JAVA [자바] (0) | 2020.03.04 |
[백준] 2577번 : 숫자의 개수 - JAVA [자바] (36) | 2020.02.28 |
[백준] 2742번 : 기찍 N - JAVA [자바] (6) | 2020.02.18 |