cpp) 백준 25206: 너의 평점은
본문 바로가기
코딩 테스트/백준 (C++, Python)

cpp) 백준 25206: 너의 평점은

by NEWSUN* 2023. 6. 9.

Problem

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

 

25206번: 너의 평점은

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

www.acmicpc.net

전공평점을 계산해주는 프로그램을 작성해보자. 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다. P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다.
 

입력 예시

 
 

Solution

#include<iostream>
#include<sstream>
#include<string>
#include<vector>

using namespace std;

int main(){

    string score;
    double sum = 0;
    double totalScore = 0;

    for(int i=0;i<20;i++){
        getline(cin, score);
        istringstream ss(score); // 문자열을 스트림화
        
        vector<string> results;

        string word;
        while(getline(ss, word, ' ')){
            // 공백을 기준으로 나눔
            results.push_back(word);
        }

        double score = stod(results[1]);
        totalScore += score;
        string grade = results[2];
        
        if(grade == "P"){
            totalScore -= score;
            continue;
        } else if (grade == "A+") {
            sum += (score * 4.5);
        } else if (grade == "A0") {
            sum += (score * 4.0);
        } else if (grade == "B+") {
            sum += (score * 3.5);
        } else if (grade == "B0") {
            sum += (score * 3.0);
        } else if (grade == "C+") {
            sum += (score * 2.5);
        } else if (grade == "C0") {
            sum += (score * 2.0);
        } else if (grade == "D+") {
            sum += (score * 1.5);
        } else if (grade == "D0") {
            sum += (score * 1.0);
        } else if (grade == "F") {
            sum += (score * 0.0);
        } 
        
    }

    cout << fixed;
    cout.precision(6);
    cout << sum / totalScore;
    
    return 0; 
}

 
- 한 줄씩 입력받기 위해 getline() 함수 사용
- 공백을 기준으로 나누기 위해서 스트림화해야 한다. (헤더 파일 sstream 추가)
- 문자열을 담을 벡터를 선언하여 공백을 기준으로 분리된 '과목명', '학점', '성적'을 차례로 넣어준다.
- string을 double 숫자로 바꿔주는 stod() 함수를 사용하여 학점 계산
 
 

Reference

https://wooono.tistory.com/462

 

[C++] String 공백 분리

들어가기 앞서, 파이썬에서는 string을 공백 분리하기 위해 split 메소드를 사용할 수 있습니다. 하지만, C++은 STL에서 split 을 지원하지 않기 때문에, 다른 방법을 사용해야합니다. 다양한 방법들 중

wooono.tistory.com

 

'코딩 테스트 > 백준 (C++, Python)' 카테고리의 다른 글

cpp) 백준 1003: 피보나치 함수  (1) 2023.06.10
cpp) 백준 1541: 잃어버린 괄호  (0) 2023.06.09
cpp) 백준 1260: DFS와 BFS  (0) 2023.06.09
BFS, DFS 이해하기  (0) 2023.06.08
cpp) 백준 1931: 회의실 배정  (0) 2023.06.08