본문 바로가기
백준 문제풀이

[백준]25206번 문제 풀이

by Dodledd 2024. 1. 28.

*모든 풀이는 현재 배운 것만 사용하여 풀이하므로 다른 분의 더 좋은 풀이가 많을 수 있습니다.

 

문제 :

============================================================================================

 

힌트 : Scanner 는 띄어쓰기와 개행문자로 입력을 구분하는 것을 이용해서 풀었습니다.

과목평점은 개수가 많으니 switch문을 사용했습니다. 소수점 계산을 해야하니 double 또는 float로 하였고 P / F 과목을 if 로 예외 처리 하였습니다.

 

===========================================================================================

 

 

풀이:

 

문제 입력대로 넣었을 시

ObjectOrientedProgramming1 3.0 A+
IntroductiontoComputerEngineering 3.0 A+

위 두줄 만 넣었다고 가정해보겠습니다.

과목명과 3.0 A+ 사이에는 띄어쓰기가 있으니 sc.next() 로 구분하여

str에는 과목명이 들어가게,

num에는 학점이 들어가게,

alph에는 과목평점이 들어가게 해놓았습니다.

이렇게 한 바퀴를 돌면 첫 줄 입력이 끝나고 두 번째 줄로 넘어가서 다시 str부터 받기 시작합니다.

switch 문으로 alph에 입력된 과목평점 알파벳으로 값을 넣어주고  switch문이 끝날 때 마다 학점 * 과목평점과 학점 총합을 계산하게 됩니다.

import java.util.Scanner;


public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
	
		
		String str; //입력 과목명
		double num=0; //입력 학점 
		String alph; //입력 과목평점 값
		
		double score = 0; //A+ = 4.5, A = 4.0 ....과목평점을 점수로환산
		double result = 0; //학점 * 과목평점
		double sumNum = 0; // 학점 총합
		
		for(int i = 0; i<20; i++) {
			
			str=sc.next();
			num=sc.nextDouble();
			alph=sc.next();
			
			switch(alph) { //과목평점 구분
			case "A+":
				score=4.5;			
				break;
			case "A0":
				score=4.0;				
				break;
			case "B+":
				score=3.5;				
				break;
			case "B0":
				score=3.0;				
				break;
			case "C+":
				score=2.5;				
				break;
			case "C0":
				score=2.0;			
				break;
			case "D+":
				score=1.5;			
				break;
			case "D0":
				score=1.0;				
				break;
			case "F":
				score=0.0;
				break;	
				default:
					break;
			}//end switch
			if(!(alph.equals("P"))) { // P or F 과목은 제외
				result+=num*score;
				sumNum+=num;
			}
		}///end for
		
		System.out.printf("%.6f",result/sumNum); //소수점 6자리까지 출력

	}//end main
}//end Main

 

 

'백준 문제풀이' 카테고리의 다른 글

[백준] 1032번 문제풀이  (0) 2024.02.20
[백준] 1920번 문제풀이  (0) 2024.02.10
[백준]10828번 문제풀이  (0) 2024.02.05
[백준]1157번 문제 풀이  (0) 2024.01.29
[백준] 3052번 문제 풀이  (2) 2024.01.28