[브론즈 2] 백준 10040 - 투표 (파이썬)
글 작성자: pental
https://www.acmicpc.net/problem/10040
풀이
- N명의 선수에게 각각 가장 낮은 응모 번호 이상인 응모자 한 명씩을 배정한다.
- 응모자는 B 리스트에, 선수의 응모 기준 번호는 A 리스트에 주어진다.
- 가장 많은 응모자를 배정받은 선수의 번호(1-based)를 출력해야 한다.
count = [0] * N # 각 선수에게 배정된 응모자 수
for i in range(M): # 모든 응모자에 대해
for j in range(N): # 선수 순서대로 확인
if A[j] <= B[i]: # 응모 조건을 만족하면
count[j] += 1 # 해당 선수에 배정
break # 이 응모자는 더 이상 배정되지 않음
A[j] ≤ B[i]인 가장 첫번쨰 선수 J를 찾아서 B[i]를 배정한다.
응모자는 한 번만 배정되며, 여러 선수가 가능하다면 가장 앞에 있는 선수에게 배정된다.
max_vote = 0
who = -1
for i in range(N):
if max_vote < count[i]: # 최댓값 갱신
max_vote = count[i]
who = i
print(who + 1) # 1-based index로 출력
응모자의 투표를 받고 가장 많이 배정된 선수를 출력한다.
코드
# 백준 10040 - 투표
# 분류 : 구현
N, M = map(int, input().split())
A = [int(input()) for _ in range(N)]
B = [int(input()) for _ in range(M)]
count = [0] * N
for i in range(M) :
for j in range(N) :
if A[j] <= B[i] :
count[j] += 1
break
max_vote = 0
who = -1
for i in range(N) :
if max_vote < count[i] :
max_vote = count[i]
who = i
print(who + 1)
'Programming > 백준' 카테고리의 다른 글
[브론즈 1] 백준 10041 - 관광 (파이썬) (0) | 2025.05.04 |
---|---|
[브론즈 2] 백준 14471 - 포인트 카드 (파이썬) (0) | 2025.05.04 |
[골드 3] 백준 4179 - 불! (파이썬) (0) | 2025.05.03 |
[실버 5] 백준 31738 - 매우 어려운 문제 (파이썬) (0) | 2025.05.03 |
[골드 4] 백준 10830 - 행렬 제곱 (파이썬) (0) | 2025.05.03 |
댓글
이 글 공유하기
다른 글
-
[브론즈 1] 백준 10041 - 관광 (파이썬)
[브론즈 1] 백준 10041 - 관광 (파이썬)
2025.05.04 -
[브론즈 2] 백준 14471 - 포인트 카드 (파이썬)
[브론즈 2] 백준 14471 - 포인트 카드 (파이썬)
2025.05.04 -
[골드 3] 백준 4179 - 불! (파이썬)
[골드 3] 백준 4179 - 불! (파이썬)
2025.05.03 -
[실버 5] 백준 31738 - 매우 어려운 문제 (파이썬)
[실버 5] 백준 31738 - 매우 어려운 문제 (파이썬)
2025.05.03