코딩 테스트

[코딩테스트 6일차] BAEKJOON 9498번 : 시험 성적

sunlight-dby 2025. 4. 11. 01:31

[BAEKJOON 9498번 : 시험 성적]

[문제]

[고찰]

해당 문제에 경우에 if 문을 통해 쉽게 풀 수 있는 문제입니다.
하지만 저는 switch문을 통해 풀어 방법을 소개하고자 정리하였습니다.

 

[개념]

switch문으로 풀기 위해서는, 점수를 case문에 맞는 조건으로 설정하는 것이 필요합니다.

그러기위해서 trunc( ) 함수를 사용하였습니다.

 

[ trunc( ) ]

trunc() 함수는 실수형 숫자의 소수 부분을 제거하고 정수 부분만 반환하는 함수입니다.

  • 헤더파일
    • <cmath>
  • 형식
    • double trunc(double x);
    • float trunc(float x);
    • long double trunc(long double x);
  • 예시
#include <iostream>
#include <cmath>

int main() {
    double value1 = 3.7;
    double value2 = -3.7;

    std::cout << "trunc(3.7) = " << trunc(value1) << std::endl;  // 3.0
    std::cout << "trunc(-3.7) = " << trunc(value2) << std::endl; // -3.0

    return 0;
}

 

[정리]

trunc()함수를 활용하여 점수를 10으로 나눈뒤, 정수 부분만 반환합니다.

반환한 값에 10을 곱하여 100, 90, 80, 70, 60으로 반환되게 하면 switch문으로 문제를 풀 수 있습니다.

 

[Solution]

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);

	int score;

	cin >> score;

	score = (int)(trunc(score / 10.0) * 10);

	switch (score)
	{
		case 100:
			cout << "A";
			break;
		case 90:
			cout << "A";
			break;
		case 80:
			cout << "B";
			break;
		case 70:
			cout << "C";
			break;
		case 60:
			cout << "D";
			break;
		default:
			cout << "F";
			break;
	}

	return 0;
}