시험 성적 _ 백준 9498번
백준에 다음과 같은 문제가 있습니다.
문제 자체는 어렵지 않습니다.
그런데 문제를 풀려고 해 보니까 2가지 방법이 우선 떠오르더라고요.
if / else 구문을 이용한 방법과
switch / case 구문의 2가지 방법이었습니다.
우선 최근에 다시 처음부터 차근차근 풀어보기를 시작하면서 입력은 BufferedReader를 이용해서 입력받는 것을 연습하고 있고요.(덕분에 속도가 많이 빨라지긴 했습니다.)
저 2개 방법의 속도 차이가 궁금해서 우선 검색을 해봤는데 그 값을 비교해야 되는 경우가 많으면 많아질수록 switch / case 문이 유리하다고는 나오더라고요.
근데 저렇게 짧은 코드에서도 유의미한 차이가 날까 싶어서 직접 돌려봤습니다.
[JAVA] if / else 문과 switch / case 문 비교
if/else 문으로 만든 코드는 다음과 같고요.
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 str = br.readLine();
int score = Integer.parseInt(str);
if(score >= 90){
System.out.println("A");
}else if(score >= 80){
System.out.println("B");
}else if(score >= 70){
System.out.println("C");
}else if(score >= 60){
System.out.println("D");
}else {
System.out.println("F");
}
}
}
switch/case 문으로 만든 코드는 아래와 같이 만들었습니다.
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 str = br.readLine();
int score = Integer.parseInt(str);
switch(score/10){
case 10 :
case 9 : System.out.println("A");
break;
case 8 : System.out.println("B");
break;
case 7 : System.out.println("C");
break;
case 6 : System.out.println("D");
break;
default : System.out.println("F");
break
}
}
}
case 문 같은 경우에는 범위 값으로 정할 수 없기 때문에 /10을 해서 그 몫을 이용하는 방법을 사용했습니다.
백준에서 동작하는 메모리, 속도 비교
대단한 비교를 할 건 아니고 백준의 실행 속도만 비교해 봤습니다.
코드 자체가 워낙 짧고 얼마 안 되는 양이다 보니까 실제 성능 비교에는 큰 의미는 없을 거라고 생각했지만 혹시나 Scanner와 BufferedReader처럼 뭔가 유의미한 차이가 나지 않을까 기대해 봤는데요.
가운데는 오타가 나서 컴파일 에러가 나버린 거라서 무시해 주시고요. ㅎㅎ
보시면 알겠지만 메모리와 시간이 거의 차이가 없더라고요.
코드 자체가 워낙 짧다 보니까 성능의 차이가 날 여지가 없는 것 같습니다.
결론적으로 코드가 아주 길어지거나 반복문이 매우 많이 돌아간다면 또 어떻게 될지 모르겠지만 그냥 간단한 문제 풀이나, 짧은 문제 풀이들에서는 편한 구문을 사용하면 될 것 같습니다.
나중에 제 수준이 많이 올라서 속도에 아주 민감한 문제 풀이 수준까지 가면 그때 다시 한번 탐구해 봐야겠습니다.
이렇게 짧은 코드에서는 유의미한 속도 차이를 확인할 수 없었다.
'개발 일상(Dev)' 카테고리의 다른 글
챗봇_KoChat Demo 실행해보기 (feat.Window) (0) | 2024.08.10 |
---|---|
챗봇_한국어 챗봇 프레임워크 Kochat 소개 (2) | 2024.07.19 |
[컴퓨터 공학 기초 강의] 혼자 공부하는 컴퓨터 구조+운영체제 (0) | 2024.07.10 |
윈도우 데스크탑, MacBook 2대 컴퓨터 사용 방법 연구기 (0) | 2024.03.15 |
맥, 맥북, 아이패드에서 한글 사용하기 - 편집까지 가능 (0) | 2024.03.15 |