동물원에 있는 전체 머리(동물) 수와 다리 수가 주어졌을 때, 이 데이터를 바탕으로 동물원에 있는 각 동물의 마릿수를 계산하는 문제입니다. 이 글의 예제에서는 사슴과 공작 두 종류의 동물이 있다고 가정합니다.
문제 이해하기
사슴은 다리가 4개, 공작은 다리가 2개입니다. 모든 동물은 머리를 하나씩 가지고 있으므로, 주어진 머리 수와 다리 수로 연립방정식을 세워 각 동물의 수를 구할 수 있습니다.
예제 1
입력 −
heads = 60 legs = 200
출력 −
사슴의 수: 40 공작의 수: 20
풀이 과정 −
사슴의 총 마릿수를 x라고 하자. 공작의 총 마릿수를 y라고 하자. 머리는 한 마리당 하나씩 있으므로 첫 번째 방정식은: x + y = 60 사슴은 다리가 4개, 공작은 다리가 2개이므로 두 번째 방정식은: 4x + 2y = 200 연립방정식을 풀면: 4(60 - y) + 2y = 200 240 - 4y + 2y = 200 y = 20 (공작의 총 마릿수) x = 40 (전체 머리 수 - 공작의 수)
예제 2
입력 −
heads = 80 legs = 200
출력 −
사슴의 수: 20 공작의 수: 60
풀이 과정 −
사슴의 총 마릿수를 x라고 하자. 공작의 총 마릿수를 y라고 하자. 첫 번째 방정식: x + y = 80 두 번째 방정식: 4x + 2y = 200 연립방정식을 풀면: 4(80 - y) + 2y = 200 320 - 4y + 2y = 200 y = 60 (공작의 총 마릿수) x = 20 (전체 머리 수 - 공작의 수)
알고리즘 접근 방법
동물원의 전체 머리 수와 다리 수를 입력받습니다.
사슴의 마릿수를 계산하는 함수를 만듭니다.
함수 내부에서 count 값을 ((다리 수) - 2 × (머리 수)) / 2로 설정합니다. 이는 공작이 다리를 2개씩 차지한다고 가정하고 남은 다리를 사슴에게 배분하는 원리입니다.
계산된 count 값을 반환합니다.
공작의 수는 전체 머리 수에서 사슴의 수를 뺀 값으로 구합니다.
결과를 출력합니다.
C++ 코드 예제
#include <bits/stdc++.h>
using namespace std;
// 사슴의 마릿수를 계산하는 함수
int count(int heads, int legs){
int count = 0;
count = ((legs)-2 * (heads))/2;
return count;
}
int main(){
int heads = 80;
int legs = 200;
int deers = count(heads, legs);
int peacocks = heads - deers;
cout<<"Count of deers are: "<<deers<< endl;
cout<<"Count of peacocks are: " <<peacocks<< endl;
return 0;
}실행 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다 −
Count of deers are: 20 Count of peacocks are: 60
마무리
이 문제는 단순한 연립방정식을 프로그래밍으로 해결하는 대표적인 예시입니다. 핵심 공식인 (전체 다리 수 − 2 × 전체 머리 수) ÷ 2를 기억하면 네 발 달린 동물의 수를 즉시 구할 수 있습니다. 이 방법은 닭과 소, 토끼와 오리 등 다양한 두 종류의 동물 문제에도 그대로 응용할 수 있습니다.