개인적으로 수식을 구성하는데 조금 어려움이 있었던 문제입니다.
앨범에 수록된 곡의 개수 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;
}
'solved > 브론즈' 카테고리의 다른 글
solved 브론즈 백준 5554번: 심부름 가는 길 (0) | 2021.09.13 |
---|---|
solved 브론즈 백준 3003번: 킹, 퀸, 룩, 비숍, 나이트 (0) | 2021.09.13 |
solved 브론즈 백준 2845번: 파티가 끝나고 난 뒤 (0) | 2021.09.13 |
solved 브론즈 백준 2475번: 검증수 (0) | 2021.09.13 |
solved 브론즈 백준 2338번: 긴자리 계산 (0) | 2021.09.09 |