https://www.acmicpc.net/problem/9498
Answer 1
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));
String input = br.readLine();
int score = Integer.parseInt(input);
String grade = "";
if(score >= 90) grade = "A";
else if(score >= 80) grade = "B";
else if(score >= 70) grade = "C";
else if(score >= 60) grade = "D";
else grade = "F";
System.out.println(grade);
}
}
Code Explanation
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
사용자로부터 입력을 바이트 단위로 받기 위해 입력 스트림 `System.in`을 사용했다.
Scanner 클래스보다 BufferedReader 클래스가 더 효율적인 메모리 용량을 가지기 때문에 사용했다.
이 문제는 입력을 하나만 받기 때문에 구분자로 나누는 StringTokenizer 클래스를 사용하지 않았다.
Additional Information
이전에 풀었던 백준 문제에서 Scanner 클래스와 BufferedReader 클래스를 비교했는데 BufferedReader 클래스의 성능이 더 좋기 때문에 앞으로도 BufferedReader 클래스로 문제를 풀 것 같다.
Scanner, BufferedReader 성능 비교한 문제
2023.11.14 - [Baekjoon(JAVA)/Algorithm] - [Baekjoon(JAVA) - Algorithm] 1330번: 두 수 비교하기
if(score >= 90) grade = "A";
else if(score >= 80) grade = "B";
else if(score >= 70) grade = "C";
else if(score >= 60) grade = "D";
else grade = "F";
위의 코드 대신
grade = (score >= 90) ? A : (score >= 80) ? "B" : (score >= 70) ? "C" : (score >= 60) ? "D" : "F";
이 코드 처럼 삼항연사자를 사용해도 된다.
삼항연사자의 사용 유무에 따라 성능이 달라지지는 않으니 가독성이 좋아 보이는 것을 사용하면 될 것 같다.