[백준/파이썬] 10040번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 10040번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
20XX년 도쿄에서 세계적인 스포츠 대회가 열린다. 프로그래밍 대회는 전세계적으로 인기있는 스포츠이고, 정식 종목으로 채택 될 가능성이 점점 높아지고 있다. 정식 종목으로 채택될 경기를 조직위원회에 문의해보니 다음과 같은 답변을 얻게 되었다.
-
조직위원회는 정식 종목으로 채택할 후보 종목 N개를 재미있는 순서대로 나열한 리스트를 만들었다. 위에서부터 i번째에 적혀있는 경기는 i번째로 재미있는 경기이다. 이 경기를 i라고 했을 때, 개최하는데 필요한 비용은 Ai이다.
-
조직위원회는 총 M명으로 구성되어 있고, 순서대로 1번 위원부터 M번 위원이다. 각각의 위원 j는 자신의 심사 기준 Bj를 가지고 있으며, 개최 비용이 Bj를 넘지 않는 경기 중 가장 재미있는 경기에 표를 던졌다.
-
각 위원의 투표 기준에 해당하는 경기는 반드시 존재한다.
-
가장 많은 표를 획득한 경기는 하나이다.
경기 목록과 위원의 정보가 주어졌을 때, 가장 많은 표를 획득한 경기의 번호를 출력하는 프로그램을 작성하시오.
입력 요약
첫째 줄에 경기의 수 N과 위원의 수 M이 주어진다. (1 ≤ N, M ≤ 1000)
다음 N개의 줄에는 경기 i를 개최하는데 필요한 비용 Ai가 주어진다. (1 ≤ Ai ≤ 1000)
다음 M개의 줄에는 위원 j의 심사 기준 Bj가 주어진다. (1 ≤ Bj ≤ 1000)
출력 요약
가장 많은 표를 획득한 경기의 번호를 출력한다.
코드
import sys; read = sys.stdin.readline
n, m = map(int, read().split())
a = [int(read()) for _ in range(n)]
b = [int(read()) for _ in range(m)]
votes = [0] * n
for max_cost in b:
for i in range(n):
if a[i] <= max_cost:
votes[i] += 1
break
print(votes.index(max(votes)) + 1)
설명
핵심은 구현 관점에서 20XX년 도쿄에서 세계적인 스포츠 대회가 열린다. 프로그래밍 대회는 전세계적으로 인기있는 스포츠이고, 정식 종목으로 채택 될 가능성이 점점 높아지고 있다. …를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기