본문 바로가기
solved/브론즈

solved 브론즈 백준 2914번: 저작권

by 비원(Be one) 2021. 9. 13.
반응형

개인적으로 수식을 구성하는데 조금 어려움이 있었던 문제입니다.

앨범에 수록된 곡의 개수 a와 평균값 l을 입력받으면 적어도 몇 곡이 저작권이 있는 멜로디가 있는지 구하는 코드를 작성하는 프로그램입니다.

 

여기서 l을 구하는 식은 (멜로디의 개수 m)/(앨범에 수록된 곳의 개수 a)로 나와있습니다.

그러면 멜로디의 개수를 구하는 식은 m=a*l일 겁니다.

 

그런데 테스트 케이스를 보면 입력값이 38 24이면 출력값이 875입니다.

b=a*l가 바른 수식이라면 입력값이 38 24이면 출력값이 912여야 하는데 값이 다른 걸로 보아 이 수식이 올바른 게 아니라는 의미입니다.

 

어디가 잘못되었는지 고민하다가 평균값을 올림 한다는 것이 눈에 띄었습니다.

그러면 a/b가 23.XX면 24로 둔다는 의미로, a가 38, l가 24일 때 가능한 m의 경우는 875~911입니다.

그런데 적어도라고 했으니 가장 작은 수인 875가 출력되는 겁니다.

 

 

그러면 이를 수식으로 어떻게 표현해야 할까요?

l에서 1을 뺀 후 a와 곱하고 1을 더하면 됩니다.

테스트 케이스에서 입력값이 38 24일때 24-1인 23을 23과 곱하면 874가 되고 여기서 1을 더하면 875가 됩니다.

 

다른 예시로 a가 10, l이 10인 경우 가능한 m은 91~109이 됩니다

만약 m이 90이면 l이 9여야 하므로 모순, m이 110이면 l이 11이여야 하므로 모순이 됩니다.

이 범위를 수식화 하면 a*(l-1)+1이 됩니다.

따라서 a와 l을 입력받으면 a*(l-1)+1을 출력하면 됩니다.

 

조금 수식을 세우는데 머리를 써야했던 문제였습니다.

 

#include <stdio.h>
 
int main()
{
    int a,l;
    
    scanf("%d %d",&a,&l);
    printf("%d",a*(l-1)+1);
    
    return 0;
}

 

반응형