백준

[백준] 25206번 : 너의 평점은 (JAVA)

lucy1215 2023. 8. 13. 12:44
728x90
반응형

최근 회사 인턴생활 + 알바 + 운동에 치이고 살았던 나는 4개월만에 백준 문제를 풀어보았다.

4개월동안 알고리즘 문제를 푼 적이 없어 실버 5단계 문제인데도 시간이 조금 걸렸다...ㅋㅋㅋ

 


<문제>

 

<문제 해석>

과목에 맞는 학점과 등급을 이용하여 전공 평점을 구하라.

전공 평점 = (학점 x 과목평점) / 학점의 총합

*단, 학점이 P인 경우에는 계산에 포함시키지 않는다.

 

 

 

 

<문제 해결>

1. BufferedReader 로 과목명, 학점, 등급을 입력받는다.

2. StringTokenizer 로 학점, 등급을 저장 후,

3. 등급에 맞는 과목평점을 찾아서

4. 전공 평점을 계산해주면 된다.

5. 단, "P" 학점을 받은 경우에는 계산되지 않도록 한다.

 

 

 

 

<코드>

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	static double[] s_card = {4.5,4.0,3.5,3.0,2.5,2.0,1.5,1.0,0.0};
	static String[] r_card = {"A+","A0","B+","B0","C+","C0","D+","D0","F"};

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		double total=0;
		double s_total=0;
		double pass = 0;

		for(int y=0;y<20;y++) {

			double o_score = 0, mul = 0;
			StringTokenizer st = new StringTokenizer(br.readLine());

			st.nextToken();
			double score = Double.parseDouble(st.nextToken());
			String rank = st.nextToken();


			for(int i=0;i<s_card.length;i++) {
				if(rank.equals(r_card[i])) {
					o_score = s_card[i];
					mul = score * o_score;
					total+=mul;
					s_total += score;
					pass = total/s_total;
				}
				if(rank.equals("P")) {
					continue;
				}
			}


		}	
		System.out.printf("%.6f\n",pass);
	}
}

 

 

다음에는 더 보기 좋은 코드로 작성해볼 것이다.

문제를 풀면서 한가지 깨달았던 것은 코딩은 꾸준히 해야한다는 것이다 !!!

 

앞으로도 시간이 날 때마다 꾸준히 문제를 풀어야겠다..ㅋㅋㅋㅋ

 

 


https://www.acmicpc.net/problem/25206

 

25206번: 너의 평점은

인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치

www.acmicpc.net

 

반응형