알고리즘 정복하기!/백준 문제풀이

백준 5046번 Python / 구현

by seokii 2022. 3. 2.
728x90
반응형

문제풀이 GitHub

https://github.com/Seokii/baekjoon

 

GitHub - Seokii/baekjoon: Daily Commit for Baekjoon

Daily Commit for Baekjoon. Contribute to Seokii/baekjoon development by creating an account on GitHub.

github.com

 

문제 링크

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

 

5046번: 전국 대학생 프로그래밍 대회 동아리 연합

첫째 줄에 참가자의 수 1 ≤ N ≤ 200, 예산 1 ≤ B ≤ 500000, 호텔의 수 1 ≤ H ≤ 18, 고를 수 있는 주의 개수 1 ≤ W ≤ 13이 주어진다. 다음 줄부터 각 호텔의 정보가 주어지며, 호텔의 정보는 두 줄로

www.acmicpc.net

 

풀이

n,b,h,w = map(int, input().split())
answer = []
for _ in range(h):
    p = int(input())
    a = list(map(int, input().split()))
    if max(a) >= n and b >= p*n:
        answer.append(p*n)

if len(answer) == 0:
    print("stay home")
else:
    print(min(answer))

받아오는 변수가 많아서 헷갈리지만, 간단한 문제입니다.

호텔의 수만큼 반복해 가격과 인원 정보를 받아와 조건문으로 해결했습니다.

answer 리스트를 선언해서 숙박 예정 인원보다 투숙 가능한 인원 리스트에서 더 큰 수가 하나라도 있으며, 그에 따라 계산했을 때 예산을 넘어가지 않는다면, answer 리스트에 가능한 가격을 모두 넣었습니다.

그리고 마지막에 리스트가 비어 있다면 "stay home"을 출력하고,

리스트에 하나라도 원소가 있다면, 최솟값을 불러 출력했습니다.

 

 

728x90
반응형

댓글