본문 바로가기

알고리즘

[백준] 16283번 FARM C++ 문제풀이

https://www.acmicpc.net/problem/16283

 

16283번: Farm

입력은 표준입력을 사용한다. 첫 번째 줄에 네 정수 a, b, n, w가 한 줄에 주어진다. 1 ≤ a ≤ 1,000, 1 ≤ b ≤ 1,000, 2 ≤ n ≤ 1,000, 2 ≤ w ≤ 1,000,000이다.

www.acmicpc.net

문제 풀이

이 문제 구현은 굉장히 간단했다. 

a * i + b *(n-i) == w 인지만 확인하면 되는건데, 문제에서 작은 디테일들에서 계속 실수를 했다.

1) 기르는 양과 염소는 각각 한 마리 이상이다

2) 만약 가능한 해가 2개 이상이거나 해가 없을 경우 -1을 출력한다

이 2개를 제대로 안 읽고 몇 번 틀렸다... ㅎ

다음부터는 문제를 잘 읽어야겠다!

소스 코드

#include <iostream>
using namespace std;

int main() {
	int a, b, n, w;
	int finds = 0;
	int idx = 0;
	cin >> a >> b >> n >> w;
    
	for (int i = 1; i < n; i++) {
		if (a * i + b * (n - i) == w) {
			idx = i;
			finds += 1;
		}
	}
    
	if (finds == 1 ) {
		cout << idx << " " << n - idx << '\n';
	}
	else {
		cout << "-1" << '\n';
	}
}