백준 2914번 - 저작권 / C++

김종민·2025년 2월 27일

문제풀이

목록 보기
1/5

1. 문제

문제 링크


2. 풀이

곡의 개수 A와 평균값 I가 주어졌을 때 적어도 몇 곡이 저작권이 있는 멜로디인지 구해야한다.

멜로디 M의 최솟값을 구해야한다.
정확한 M의 값을 구하는 것이 아니고 M / A의 값이 I가 되도록하는 최솟값을 찾는 것.

문제의 문장만 봐도 저작권이 있는 멜로디 M은 894개지만 같은 조건의 예제 최솟값은 875개.
M이 894일 때 평균 : 23.53
M이 최솟값 875일 때 평균 : 23.02

평균값 I는 항상 올림이 되어있다.

평균값 I는 항상 올림이 되어있기때문에 I의 값의 범위는

I−1<X≤II-1 < X \leq I


위의 예제 범위에 대입한다면 I = M/A

23<M/A≤2423 < M/A \leq 24


이런 식으로 정리할 수 있는데 M을 구하기 위해 식을 정리하면

23×A<M≤24×A23\times A < M \leq 24\times A


수록곡의 수A는 38이라고 했으니 계산해보면

874<M≤912874 < M \leq 912


멜로디의 수는 정수이므로 해당 범위에서 최솟값을 구하기위해 +1
874+1=875874 + 1 = 875 가 최솟값이 된다.

정리하자면
M의 최솟값은 평균값 I의 최소 범위인 I-1에 A를 곱한 뒤 +1을 한 값

(편의상 최소 범위라고 했지만 I-1은 I 범위에 포함이 되어있지않음)

3. 코드

#include <iostream>

using namespace std;
int main()
{
    int A,I;
    cin >> A >> I;
    cout << A*(I-1)+1;
    
    return 0;
}

참고 자료

https://www.acmicpc.net/board/view/110527
https://velog.io/@osk3856/BOJ-JAVA-Bronze5-2914

profile
정리와 기록

0개의 댓글