[C++][백준 14429] 배스킨라빈스 31

PublicMinsu·2024년 6월 19일
0

문제

접근 방법

1+m씩 늘어난다는 점은 사이의 길이를 계산할 수 있다는 것이다.

코드

#include <iostream>
using namespace std;
int n, j, m, index, len = 987654321;
int main()
{
    ios::sync_with_stdio(0), cin.tie(0);

    cin >> n;

    for (int i = 1; i <= n; ++i)
    {
        cin >> j >> m;

        int nextLen = ((j - 1) / (m + 1) + 1) * 2;

        if (nextLen < len)
        {
            len = nextLen;
            index = i;
        }
    }

    cout << index << " " << len;
    return 0;
}

풀이

처음 내 차례 + 서로 주고받은 1+m의 개수 + 마지막 상대의 차례를 계산하면 된다.

처음 내 차례와 마지막 상대의 차례를 합치면 총합은 짝수가 된다. (서로 주고받은 횟수는 무조건 짝수일 것이기 때문이다)

즉 왕복 횟수를 구하고 2를 곱하면 된다.

profile
연락 : publicminsu@naver.com

0개의 댓글