음... 사실 이거는 단순 나눗셈 아닌가 싶어서 풀고, 예제를 다 통과해서 제출했다.
그런데 제출에서 틀렸다고 자꾸 뜨길래 뭐가 문제일까 고민하다 최대값이 int의 최대값을 넘어갈 수 있다는 생각에 정답을 long long 로 바꾸어서 통과함.

❗️ 문제에서 정답의 최댓값

각 시험장에 총감독관 1명은 필수
시험장의 최댓값은 = 1,000,000
시험장 별 응시인원 모두 최댓값 = 1,000,000
총감독관,부감독관 감시가능 인원 최소값 = 1
일 경우 1,000,000 X 1,000,000 = 1,000,000,000,000 (=10^12)
대략 2^40 이기 때문에 int 최대보다 크다, unsigned int의 최대값보다도 크다.
그러므로 8byte 크기를 가지는 long long 사용

📌 int로 표현가능한 최대수

int는 4byte = 4 X 8bit = 32 bit
signed int 의 경우 가장 앞의 비트 하나 제외하고
(-2^31 ~ 2^31-1) = (-2,147,483,648 ~ 2,147,483,647)

💻 코드

/**
 * @file 13458.cpp
 * @author jungbbong
 * @brief 
 * @version 0.1
 * @date 2023-03-22
 * 
 * @copyright Copyright (c) 2023
 * 
 */

#include<iostream>
#include<vector>
#include<queue>

using namespace std;

int N;
vector<int> tester;
int B,C;

int main(){
    long long answer=0;
    cin >> N;
    for(int i=0;i<N;i++){
        int tmp;
        cin >> tmp;
        tester.push_back(tmp);
    }
    cin >> B >> C;
    answer = N;
    for(int i=0;i<N;i++){
        tester[i]-=B;
        if(tester[i] > 0){
            if(tester[i]%C==0){
                answer = answer + (tester[i]/C);
            }else{
                answer += 1;
                answer = answer + ((tester[i])/C);
            }
        }
    }
    cout << answer <<"\n";

    return 0;
}
profile
아직은 '표류'중인 대학생입니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN