[백준 BOJ] 11257번 IT Passport Examination (C++/cpp)

2024. 3. 6. 22:48PS (Program Solving)/BOJ (백준)

문제 설명

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

 

11257번: IT Passport Examination

บรรทัดแรก เป็นจํานวนเต็ม N ระบุจํานวนผู้สอบ และ N บรรทัด ต่อมาเป็นข้อมูลของผู้เข้าสอบแต่ละค

www.acmicpc.net

백준 BOJ 11257번 IT Passport Examination 문제 사진

 

접근 방법 - 기초적인 사칙연산을 활용한 수학 문제

백준의 11257번 문제는 기초적인 사칙연산을 활용하여 간단히 해결할 수 있는 수학 문제이다.

해당 문제는, 수험자의 번호 및 3개의 항목에 대한 점수가 각 입력으로 주어질 때 형식에 맞게끔 합불 결과를 구하여 출력해야 하는 문제이다.

이때, 해당 시험의 합격 조건은 아래와 같다.

  • 총점 55점 이상의 점수 취득
  • 각 분야의 30% 이상의 점수 취득 I :: 전략 분야(첫 번째 입력)의 만점 35점 중 30% 이상
  • 각 분야의 30% 이상의 점수 취득 II :: 경영 분야(두 번째 입력)의 만점 25점 중 30% 이상
  • 각 분야의 30% 이상의 점수 취득 III :: 기술 분야(세 번째 입력)의 만점 40점 중 30% 이상

문제의 번역본은 이 링크를 참고해 보면 된다. https://www.acmicpc.net/board/view/93562

 

글 읽기 - (번역) 11257 - IT 능력 시험

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

 

위에 명시되어 있는 대로, 각 응시자의 점수값에 대하여 합격인지 불합격인지만 구하여 형식에 맞게 정답을 출력하면 되는 문제이다.

자세한 내용은 아래에 기재해 놓으니, 혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고해 보길 바란다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 응시자의 수(t)를 입력받는다.

 

2) t의 크기만큼, 반복문을 수행하여 아래의 연산을 취한다.

- 응시자의 번호(st), 그리고 3개 분야에 대한 각 점수(s, m, tech)를 입력받는다.

이때 필자는, 문자열과 숫자를 함께 입력받게끔 하여서 cin.ignore()로 입력값들 간 충돌이 발생하지 않도록 하였다.

- 총점을 저장할 변수 sum을 선언한 뒤, 3개 점수의 합(s+m+tech)을 초기값으로 설정한다.

- 출력 형식을 참고하면서, 각각 응시자의 번호와 총점을 의미하는 st와 sum을 한 줄에 순차적으로 출력한다.

- "총점 55점 이상, 각 분야의 만점 중 각각 30% 이상"이라는 조건을 걸어, 조건문을 실행한다.

만약 위 조건들을 모두 만족한다면, 이는 시험에 합격한 경우를 의미한다. 따라서 이 경우엔 "PASS"를 출력한다.

다만 하나라도 조건을 만족하지 못한다면, 이는 시험에 불합격한 경우를 의미한다. 따라서 이 경우엔 "FAIL"을 출력한다.

 

3) 위 연산을 모두 완료하였다면, 실행을 종료하도록 한다.

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;

//백준 11257번 코드
int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);   cout.tie(NULL);

    int t;
    cin >> t;
    for (int i = 0; i < t; i++) {
        string st;
        cin >> st;
        cin.ignore();

        int s, m, tech;
        cin >> s >> m >> tech;

        int sum = s + m + tech;
        cout << st << " " << sum << " ";
        if (sum >= 55 && s >= 35 * 0.3 && m >= 25 * 0.3 && tech >= 40.0 * 0.3) {
            cout << "PASS" << endl;
        }
        else {
            cout << "FAIL" << endl;
        }
    }
}

 

제출 결과

백준 BOJ 11257번 IT Passport Examination 문제 C++ 제출 결과

(2024.01.14 백준 11257번 문제 제출 결과)

반응형