알고리즘/BOJ

백준 11006번 남욱이의 닭장

꾸준함. 2018. 7. 29. 03:17

문제 링크입니다: https://www.acmicpc.net/problem/11006


간단한 수학 문제였습니다.


알고리즘은 아래와 같습니다.

1. 두 다리가 모두 있는 닭의 최대 개수는 lower_bound(다리의 수 / 2)마리입니다.

2. 따라서 1에서 구한 값부터 반복문을 돌리면서 조건이 맞는지 확인합니다.

3. 조건이 맞으면 반복문을 탈출하고 다리가 한 개인 닭과 다리가 두 개인 닭의 마리 수를 출력합니다.


#include <iostream>

using namespace std;

 

int main(void)

{

        ios_base::sync_with_stdio(0);

        cin.tie(0); //cin 실행속도 향상

        int test_case;

        cin >> test_case;

 

        for (int t = 0; t < test_case; t++)

        {

                 int N, M;

                 cin >> N >> M;

 

                 int twoLegs = N / 2;

                 int oneLeg;

                

                 while (1)

                 {

                         //(M - twoLegs)가 결국 다리가 한 개인 닭 마리 수

                         if ((M - twoLegs) + twoLegs * 2 == N)

                         {

                                 oneLeg = M - twoLegs;

                                 break;

                         }

                         twoLegs--;

                 }

 

                 cout << oneLeg << " " << twoLegs << "\n";

        }

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 11009번 Drinks  (0) 2018.07.29
백준 11008번 복붙의 달인  (0) 2018.07.29
백준 13900번 순서쌍의 곱의 합  (0) 2018.07.29
백준 11003번 최소값 찾기  (0) 2018.07.28
백준 11007번 Inverse Move-to-Front Transform  (4) 2018.07.28