본문 바로가기

Algorithm/Brute Force

(C++) - 백준(BOJ) 6811 : Old Fishin’ Hole

반응형

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

 

6811번: Old Fishin’ Hole

You will be given 4 integers, one per line, representing trout points, pike points, pickerel points, and total points allowed in that order. You can assume that each integer will be greater than 0 and less than or equal to 100.

www.acmicpc.net

모든 조합을 찾는 brute force 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

각 물고기 이름에 대한 점수를 저장할 변수를 선언하고 입력받습니다. 총 조합의 개수를 출력할 변수 cnt도 선언해줍니다.

📔 풀이과정

3중 for문을 수행하며 최소한 1마리의 물고기를 잡고 합산 점수가 totalPoints이하인 경우를 모두 찾습니다.

📔 정답출력

 1. for문 내에서는 cnt를 증가하고 해당 조합을 출력해줍니다.

 2. for문이 끝나면 물고기를 잡는 모든 경우 cnt를 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;

int troutPoints, pikePoints, pickerelPoints, totalPoints, cnt;

int main(){
    cin >> troutPoints >> pikePoints >> pickerelPoints >> totalPoints;
    for(int i = 0; i <= 100; i++) 
        for(int j = 0; j <= 100; j++)
            for(int k = 0; k <= 100; k++)
                if(i || j || k){
                    if(i * troutPoints + j * pikePoints + k * pickerelPoints <= totalPoints) {
                        printf("%d Brown Trout, %d Northern Pike, %d Yellow Pickerel\n", i, j, k);
                        cnt++;
                    }
                }
    printf("Number of ways to catch fish: %d", cnt); 
}