Problem Solving

[Java] 백준 25206. 너의 평점은

2023. 3. 7. 16:48
목차
  1. 문제
  2. 입력
  3. 출력
  4. 제한
  5. 풀이
  6. 정답
728x90

문제

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

치훈이의 전공평점을 계산해주는 프로그램을 작성해보자.

전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다.

인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다.

A+ 4.5

A0 4.0
B+ 3.5
B0 3.0
C+ 2.5
C0 2.0
D+ 1.5
D0 1.0
F 0.0

P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다.

과연 치훈이는 무사히 졸업할 수 있을까?

입력

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

출력

치훈이의 전공평점을 출력한다.

정답과의 절대오차 또는 상대오차가 10−4\(10^{-4}\) 이하이면 정답으로 인정한다.

제한

  • 1 ≤ 과목명의 길이 ≤ 50
  • 과목명은 알파벳 대소문자 또는 숫자로만 이루어져 있으며, 띄어쓰기 없이 주어진다. 입력으로 주어지는 모든 과목명은 서로 다르다.
  • 학점은 1.0,2.0,3.0,4.0중 하나이다.
  • 등급은 A+,A0,B+,B0,C+,C0,D+,D0,F,P중 하나이다.
  • 적어도 한 과목은 등급이 P가 아님이 보장된다.

예제 입력

ObjectOrientedProgramming1 3.0 A+
IntroductiontoComputerEngineering 3.0 A+
ObjectOrientedProgramming2 3.0 A0
CreativeComputerEngineeringDesign 3.0 A+
AssemblyLanguage 3.0 A+
InternetProgramming 3.0 B0
ApplicationProgramminginJava 3.0 A0
SystemProgramming 3.0 B0
OperatingSystem 3.0 B0
WirelessCommunicationsandNetworking 3.0 C+
LogicCircuits 3.0 B0
DataStructure 4.0 A+
MicroprocessorApplication 3.0 B+
EmbeddedSoftware 3.0 C0
ComputerSecurity 3.0 D+
Database 3.0 C+
Algorithm 3.0 B0
CapstoneDesigninCSE 3.0 B+
CompilerDesign 3.0 D0
ProblemSolving 4.0 P

예제 출력

3.284483

풀이

주어진 과목평점을 HashMap에 넣어준 후 입력받는 점수를 평점으로 바꿔 계산하도록 했다.

풀이 자체는 어렵지 않지만 어제 HashMap을 배웠고 적용하기 가장 좋은 문제라고 생각해서 오늘 풀어봤다!

정답

128 ms, 14304 KB

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        HashMap<String, Double> hashMap = new HashMap<>();
        hashMap.put("A+", 4.5);
        hashMap.put("A0", 4.0);
        hashMap.put("B+", 3.5);
        hashMap.put("B0", 3.0);
        hashMap.put("C+", 2.5);
        hashMap.put("C0", 2.0);
        hashMap.put("D+", 1.5);
        hashMap.put("D0", 1.0);
        hashMap.put("F", 0.0);

        double sum = 0;
        double creditSum = 0;

        for(int i=0; i<20; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            st.nextToken(); //과목 이름은 필요 없기 때문에 버린다.
            double credit = Double.parseDouble(st.nextToken());
            String score = st.nextToken();

            if(!score.equals("P")) {
                sum += hashMap.get(score)*credit;
                creditSum += credit;
            }
        }
        System.out.println(sum/creditSum);
    }
}
728x90
반응형
저작자표시 (새창열림)

'Problem Solving' 카테고리의 다른 글

[Java] 프로그래머스. 겹치는 선분의 길이  (1) 2023.03.14
[Java] 백준 9020. 골드바흐의 추측  (0) 2023.03.07
[Java] 백준 1978. 소수 찾기  (0) 2023.02.28
[Java] 백준 10250. ACM 호텔  (0) 2023.02.24
[Java] 백준 2839. 설탕 배달  (0) 2023.02.24
  1. 문제
  2. 입력
  3. 출력
  4. 제한
  5. 풀이
  6. 정답
'Problem Solving' 카테고리의 다른 글
  • [Java] 프로그래머스. 겹치는 선분의 길이
  • [Java] 백준 9020. 골드바흐의 추측
  • [Java] 백준 1978. 소수 찾기
  • [Java] 백준 10250. ACM 호텔
조화이트
조화이트
반응형
조화이트
백엔드 공부 기록
조화이트
전체
오늘
어제
  • 분류 전체보기 (69)
    • CodeStates_BE_44 (30)
      • TIL (21)
      • 월간 회고 (1)
      • 과제 (6)
      • 코플릿 (2)
    • Problem Solving (23)
      • Study (4)
    • Reading (9)
      • 자바의 정석 (2)
      • 스프링 입문을 위한 자바 객체지향의 원리와 이해 (7)
    • CS (6)
      • Data Structure (3)
      • Algorithm (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.
조화이트
[Java] 백준 25206. 너의 평점은
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.