N

(SWEA c++)1491. 원재의 벽 꾸미기 본문

SW Expert Academy

(SWEA c++)1491. 원재의 벽 꾸미기

naeunchan 2020. 10. 16. 20:01
728x90
반응형

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV2b9AkKACkBBASw&categoryId=AV2b9AkKACkBBASw&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

int형으로 R, C를 선언하면 오버플로우가 발생할 수 있으므로 long long 형태로 선언하고,

최소값 또한 long long으로 선언해준다.

 

R = 1 ~ sqrt(N)까지의 값을 가지도록 한다.

C = 1 ~ N / R까지의 값을 가지도록 하여 계산을 한다.

long long형으로 가중치 계산을 하여 min과 비교를 해주어

min 값이 더 크다면 tmp로 바꿔주어 최소값을 찾도록 한다.

#include <iostream>
#include <cmath>

using namespace std;

int main(void)
{
    int t;
    cin >> t;
    
    for(int i = 1; i <= t; i++)
    {
        int N, A, B;
        long long R, C;
        long long min = 9876543210;
        
        cin >> N >> A >> B;
        
        for(R = 1; R <= sqrt(N); R++)
        {
            long long maxC = N / R;
            for(C = 1; C <= maxC; C++)
            {
               long long tmp = (A * abs(R - C)) + (B * (N - (R * C)));
            	if(min > tmp)
                	min = tmp;
            }
        }
        cout << "#" << i << " " << min << endl;
    }
    return 0;
}
        
728x90
반응형