컴퓨터기본/문제풀이

[정올] 2008 : 할부

차가운오미자 2021. 9. 3. 10:12

http://cham.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1281&sca=9060 

 

JUNGOL

 

www.jungol.co.kr

간단 문제 분석

 

M1: B/(N-1) B/(N-1) B/(N-1) ...... B/(N-1)+1 B/(N-1)+1 MN: B/(N-1)+1

 

주어진 게 총 할부 기간 N

앞으로(N-1달간) 내야하는 다이아 수 B

 

그림 기본적으로 2일부터 N일까지 B/(N-1) 만큼 기본적으로 내는데 마지막날(MN) 부터 전 몇 달은 +1 해서 내야한다.

근데 +1해서 내는 개월 수는 B%(N-1)로 알 수 있다. 

 

최대, 최솟값이 갈리는 경우는 다음과 같다.

B/(N-1) == 0 이면, 금액이 이렇게 나뉘는데

 

M1: ? B/(N-1) ... B/(N-1) MN: B/(N-1)

 

이때, B/(N-1)이 +1 된 금액인지, 기본 금액인지 알 수가 없다.

만약 B/(N-1)이 +1된 금액이면 M1 = B/(N-1)-1 일 거고, 기본 금액이라면 M1 = B/(N-1)일 것이다.

그럼 전자의 경우가 최솟값이고, 후자의 경우가 최댓값이 된다. 

 

작성 코드(C):

#include <stdio.h>

int A, B, N;

int main(void)
{
    // 여기서부터 작성
    scanf("%d", &N);
    scanf("%d", &B);
    
    int max = 0, min = 0;
    int def = B/(N - 1); // 남은 다이아/남은 할부 기간
    
    if (B % (N - 1) == 0) {
        min = def * (N - 1) + def - 1;
        max = def * (N - 1) + def;
    }
    else {
        max = def * (N - 1) + B % (N - 1) + def;
        min = def * (N - 1) + B % (N - 1) + def;
    }

    printf("%d %d", min, max);
    return 0;
}

'컴퓨터기본 > 문제풀이' 카테고리의 다른 글

[백준] 10799번: 쇠막대기  (0) 2021.09.03
[백준] 2567번: 색종이 - 2  (0) 2021.09.03
[정올] 2712 : 두 수의 최소합  (0) 2021.09.03
[백준] 5622번: 다이얼  (0) 2021.08.30
[백준] 2751번: 수 정렬하기 2  (0) 2021.08.26