코딩테스트/BOJ

[BOJ] 25206 너의 평점은 - JAVA

5월._. 2023. 6. 3.
728x90

1. 문제

 

25206번: 너의 평점은

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

www.acmicpc.net

20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어진다.

치훈이의 전공평점을 출력한다.
정답과의 절대오차 또는 상대오차가 10^-4 이하이면 정답으로 인정한다.


2. 풀이

1.  total에 (학점*과목평점)의 합을 더한다. count에 과목평점의 총합을 저장한다.

2.  과목명은 필요없으니 저장하지 않고 버린다.

3.  학점을 Double로 입력받는다.(입력형식이 소수임)

4.  등급을 score에 저장하고, 만약 P과목이라면 더이상 진행하지 않고 다음 과목을 입력받는다.

5.  count에 현재 과목의 학점을 더한다.

6.  과목평점을 tmp에 저장하는데, switch-case에서 break를 걸지 않으면 상위 조건문에서부터 하위 조건문까지 차례대로 실행되는 점을 이용해 ABCD순으로 tmp를 더한다. 이렇게되면 A=4, B=3, C=2,D=1이 된다.

7.  F가 아니라면 score에 모두 '+'나 '0'이 붙어있다. '+'가 있는 경우만 0.5를 더한다.

8.  total에 (과목평점tmp*학점)을 더한다.

9.  반복이 끝났다면 total을 count로 나눈 값을 출력한다. type이 double이기 때문에 오차범위를 충족한다.

import java.io.*;
import java.util.*;

public class BOJ_25206_너의평점은 {
   public static void main(String[] args) throws IOException {
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      StringTokenizer st;
      
      double total = 0, count = 0;
      String score;
      for(int i=0;i<20;i++){
         st = new StringTokenizer(in.readLine());
         st.nextToken();//과목명은 버림
         
         double point = Double.parseDouble(st.nextToken());//학점
         score = st.nextToken();//등급
         
         if(score.equals("P")){
            continue;
         }
         
         //P를 제외한 총 학점
         count += point;
         
         double tmp = 0;//과목평점
         switch (score.charAt(0)){
            case 'A':tmp++;
            case 'B':tmp++;
            case 'C':tmp++;
            case 'D':tmp++;
         }

         if(score.length() > 1 && score.charAt(1)=='+') tmp+=0.5;

         total += tmp*point;
      }

      System.out.println(total/count);
   }
}

3. 결과

이 문제를 만든 사람은 '너의이름은' 영화를 감명깊게 봤을까? 그냥 궁금하다.ㅎ..

'코딩테스트 > BOJ' 카테고리의 다른 글

[BOJ] 1013 Contact - JAVA  (0) 2023.06.04
[BOJ] 5582 공통 부분 문자열 - JAVA  (0) 2023.06.04
[BOJ] 5052 전화번호 목록 - JAVA  (0) 2023.06.02
[BOJ] 5525 IOIOI - JAVA  (0) 2023.06.01
[BOJ] 14725 개미굴 - JAVA  (0) 2023.05.31

댓글