본문 바로가기

BAEKJOON/수학

백준 30008번 [준영이의 등급](C++) -yes6686- 티스토리

728x90
SMALL

 

백준 문제 풀이: 30008 [준영이의 등급]


문제 링크: https://www.acmicpc.net/problem/30008

문제 설명:

정수 N과 K가 주어지고, 점수 G가 K개 주어질 때, 각 점수의 등급을 출력하는 문제입니다. 점수에 따라 다음 기준으로 등급이 나뉩니다:

  • 0 ≤ P ≤ 4: 1등급
  • 4 < P ≤ 11: 2등급
  • 11 < P ≤ 23: 3등급
  • 23 < P ≤ 40: 4등급
  • 40 < P ≤ 60: 5등급
  • 60 < P ≤ 77: 6등급
  • 77 < P ≤ 89: 7등급
  • 89 < P ≤ 96: 8등급
  • 96 < P ≤ 100: 9등급

문제 해결 코드


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

int main() {
    int N, K;
    cin >> N >> K;
    vector G(K);
    vector result;

    for (int i = 0; i < K; i++) {
        cin >> G[i];
    }

    for (int i = 0; i < K; i++) {
        int P = (G[i] * 100) / N;
        if (0 <= P && P <= 4) {
            result.push_back(1);
        } else if (4 < P && P <= 11) {
            result.push_back(2);
        } else if (11 < P && P <= 23) {
            result.push_back(3);
        } else if (23 < P && P <= 40) {
            result.push_back(4);
        } else if (40 < P && P <= 60) {
            result.push_back(5);
        } else if (60 < P && P <= 77) {
            result.push_back(6);
        } else if (77 < P && P <= 89) {
            result.push_back(7);
        } else if (89 < P && P <= 96) {
            result.push_back(8);
        } else if (96 < P && P <= 100) {
            result.push_back(9);
        }
    }

    for (int i = 0; i < result.size(); i++) {
        cout << result[i];
        if (i < result.size() - 1) {
            cout << " ";
        }
    }
    cout << endl;
    return 0;
}
    

코드 설명

  • 입력: N과 K를 입력받은 후, 점수 배열 G를 저장합니다.
  • 처리: 각 점수 G[i]에 대해 등급을 계산하여 결과 벡터에 추가합니다.
  • 출력: 결과 벡터를 공백으로 구분하여 출력합니다.

결과

입력된 점수에 따라 등급을 정확히 출력합니다. 다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!

728x90
LIST