본문 바로가기
Algorithm Problem Solving/BaekJoon

[BaekJoon] 백준 14697 방 배정하기 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2021. 9. 18.
728x90
반응형

BaekJoon BOJ 백준 14697 방 배정하기 문제는 숙소에는 방의 정원을 기준으로 세 종류의 방들이 여러 개 있다. 정보 초등학교에서는 학생들에게 이 방들을 배정하되, 배정된 모든 방에 빈 침대가 없도록 하는 것이 가능한지 구하는 문제이다. 난이도는 Bronze 2이다.

 

BaekJoon 14697 방 배정하기 문제 정보

출처

- https://www.acmicpc.net/problem/14697

알고리즘 분류

- 브루트 포스 알고리즘 (brute force algorithm), 수학

난이도

- 브론즈 2 / Bronze 2

 

방 배정하기 문제 요약

  • 학생들이 묵을 숙소에는 방의 정원(방 안에 있는 침대 수)을 기준으로 세 종류의 방이 있으며, 같은 종류의 방들이 여러 개 있다. 정보 초등학교에서는 학생들에게 이 방들을 배정하되, 배정된 모든 방에 빈 침대가 없도록 하고자 한다.
  • 방의 정원을 나타내는 서로 다른 세 자연수와 전체 학생 수를 나타내는 자연수 하나가 주어졌을 때, 배정된 모든 방에 빈 침대가 없도록 방 배정이 가능할 경우 표준 출력으로 1을, 불가능할 경우 0을 출력한다.
  • 단, 세 종류의 방은 모두 충분한 개수가 있다고 가정하며, 위의 예에서와 같이 세 종류의 방을 모두 활용하지 않고 한 종류 또는 두 종류의 방만 이용하여 배정하는 것도 허용한다.
  • 방의 정원을 나타내는 서로 다른 세 자연수 A, B, C (1 ≤ A < B < C ≤ 50)
  • 전체 학생 수를 나타내는 자연수 N (1 ≤ N ≤ 300)

 

문제 풀이 과정

  1. 각 방의 정원과 방의 개수를 각각 곱한 뒤 더한 값이 전체 학생 수와 같다면 빈 침대 없이 배정이 가능한 경우이므로 1을 반환하고, 같지 않다면 빈 침대 없이 배정이 불가능하므로 0을 반환한다.

 

코드 및 설명
A, B, C, N = map(int, input().split())
def room():
    for a in range(101):
        for b in range(101):
            for c in range(101):
                if (a * A) + (b * B) + (c * C) == N:
                    return 1
    return 0

print(room())

BaekJoon 백준 BOJ 14697 방 배정하기 문제를 파이썬 python으로 풀어보았다. 난이도는 Bronze 브론즈 2이다. 

728x90
반응형

댓글