ET의 공부/C언어 연습문제[ 코드업 ]

[C언어 코드업 문제풀이] CodeUp 1272 : 기부

이티의 골방 2020. 3. 12. 22:08

코드업 1272번 기부 문제 풀이 해답입니다.

 

1. 문제 설명

 

근제는 대기업 CSH의 회장이다.

최근 기업의 이미지가 좋지 않아 근제는 가난한 사람들에게 기부를 하려고 한다.

그런데 근제는 특이한 방법으로 기부를 했는데, 기부할 사람들을 번호 순으로 일정한 규칙에 따라 돈을 준다고 한다.

규칙은 다음과 같다

1, 10, 2, 20, 3, 30, 4, 40, 5, 50, 6, 60, 7, 70, 8, 80, 9, 90, 10, 100, 11, 110, 12, 120, ...

한편, 가난한 존과 밥은 돈을 받기 위해 신청을 했다.

존의 번호(k), 밥의 번호(h)가 주어질때 존과 밥이 받는 기부금의 합을 구하시오.

 

2. 입력

 

한 줄에 k, h가 공백으로 분리되어 순서대로 입력된다.

 

3. 출력

 

존과 밥이 받는 금액의 합을 출력한다.

 

4. 입력 예시

 

1 2

 

5. 출력 예시

 

11

 

6. 문제 풀이

 

#include<stdio.h>
 
int main(){
    
    int k,h,temp; //k존,h밥
    scanf("%d %d",&k, &h);
    
    if(k>=h){temp = k;}
    else{temp = h;}
    
    int money,k_money,h_money;
 
    for(int i = 1; i<= temp; i++){
 
 
        if(i%2 == 1){money = (i+1)/2;}
        else{money = (i/2)*10;}
        
        if(i == k){k_money = money;}
        if(i == h){h_money = money;}
        
    }
 
    printf("%d",k_money+h_money);
    
    
    return 0;
}
 

 

기부받는 금액의 규칙은 다음과 같습니다.

1(1), 10(2), 2(3), 20(4), 3(5), 30(6), 4(7), 40(8), 5(9), 50(10), 6(11), 60(12), 7(13), 70(14), 8(15), 80(16), 9(17), 90(18), 10(19), 100(20), 11(21), 110(22), 12(23), 120(24), ...

홀수번째 수는 1,3,5,7 순으로 기부금을 받고

짝수번째 수는 10,20,30 순으로 기부금을 받습니다.

for문으로 이를 합산하게 된다면 홀수번째 i 순서의 사람이 받는 금액은 (i+1)/2 가 됩니다. ex( 5번째 사람은 (5+1)/2 = 3을 받습니다.)

또한 짝수 번째 사람은 (i/2)*10의 금액을 받습니다. ex(6번째 사람은 (6/2)*10 = 30을 받습니다.)

이를 더해주면 답을 얻을 수 있습니다.