PS

[λ°±μ€€] 12760 μ΅œν›„μ˜ μŠΉμžλŠ” λˆ„κ΅¬? with Python

ν˜•μ€€_It's 2022. 3. 10. 18:04
728x90
λ°˜μ‘ν˜•

πŸ“Œ BOJ 12760 μ΅œν›„μ˜ μŠΉμžλŠ” λˆ„κ΅¬?

πŸ’‘ 쑰건

  1. μ΅œμ’… ν”Œλ ˆμ΄μ–΄ Nλͺ…이 λ‚¨μ•„μžˆλ‹€. 각 ν”Œλ ˆμ΄μ–΄λŠ” Mμž₯μ”©μ˜ μˆ«μžκ°€ 적힌 μΉ΄λ“œλ₯Ό κ°€μ§€κ³  있으며,
    이듀은 λ§€ ν„΄ μžμ‹ μ΄ κ°€μ§„ μΉ΄λ“œ 쀑 κ°€μž₯ 큰 μΉ΄λ“œλ₯Ό 두고 비ꡐλ₯Ό ν•˜λŠ”λ°, κ·Έ μΉ΄λ“œλ“€ 쀑 κ°€μž₯ 큰 수λ₯Ό κ°€μ§„ ν”Œλ ˆμ΄μ–΄κ°€ 1점을 νšλ“ν•œλ‹€.

  2. κ·Έ 턴에 μ‚¬μš©λœ μΉ΄λ“œλŠ” λ²„λ¦¬κΈ°λ‘œ ν•œλ‹€. (κ°€μž₯ 큰 수λ₯Ό κ°€μ§„ ν”Œλ ˆμ΄μ–΄λŠ” μ—¬λŸ¬ λͺ…일 수 μžˆλ‹€.)

3.β€ŠM번의 κ²½κΈ° ν›„ κ°€μž₯ λ§Žμ€ 점수λ₯Ό νšλ“ν•œ ν”Œλ ˆμ΄μ–΄λŠ” λͺ‡ 번 ν”Œλ ˆμ΄μ–΄μΈμ§€ κ΅¬ν•˜λŠ” 문제.

  1. 2 <= N <= 100, 1 <= M <= 100
    1 <= μΉ΄λ“œμ— 적힌 숫자 <= 100

  2. κ°€μž₯ λ§Žμ€ 점수λ₯Ό νšλ“ν•œ ν”Œλ ˆμ΄μ–΄κ°€ μ—¬λŸ¬ λͺ…일 경우, λΉˆμΉΈμ„ 사이에 두고 ν”Œλ ˆμ΄μ–΄λ“€μ˜ 번호λ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ 좜λ ₯ν•œλ‹€.

  3. μ •λ ¬ μœ ν˜•μ˜ 문제

πŸ–₯ μ†ŒμŠ€ μ½”λ“œ

from sys import stdin

n, m = map(int, stdin.readline().split())
d = {x: 0 for x in range(1, n + 1)}
players = []
for i in range(n):
    cards = list(map(int, stdin.readline().split()))
    cards.sort()
    players.append(list(reversed(cards)))

mx = [0 for _ in range(m)]

for i in range(n):
    for j in range(m):
        mx[j] = max(mx[j], players[i][j])

for i in range(n):
    for j in range(m):
        if mx[j] == players[i][j]:
            d[i + 1] += 1

mx_cnt = max(d.values())
res = []
for key, item in d.items():
    if item == mx_cnt:
        res.append(key)
res.sort()
print(*res)

πŸ”– 예제 및 μ‹€ν–‰κ²°κ³Ό

예제

5 3
5 4 3
3 4 5
3 5 4
4 5 3
3 4 4

μ‹€ν–‰κ²°κ³Ό

1 2 3 4

⌨️ 문제 풀이

  1. d λ³€μˆ˜λŠ” dictionary 이며, 각 ν”Œλ ˆμ΄μ–΄μ˜ 점수λ₯Ό μ €μž₯ν•  λ³€μˆ˜μ΄λ‹€.

  2. N λͺ…μ˜ ν”Œλ ˆμ΄μ–΄κ°€ 각자 λ“€κ³  μžˆλŠ” μΉ΄λ“œμ˜ μˆ«μžλ“€μ΄ μž…λ ₯될 λ•Œ, κ·Έ μˆ«μžλ“€μ„ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ players에 λ„£μ–΄μ€€λ‹€.

  3. 각 ν”Œλ ˆμ΄μ–΄μ˜ μΉ΄λ“œλ₯Ό μˆœνšŒν•˜λ©΄μ„œ κ°€μž₯ 큰 μΉ΄λ“œ 값을 μ €μž₯ν•œλ‹€.

  4. 각 ν”Œλ ˆμ΄μ–΄μ˜ μΉ΄λ“œλ₯Ό μˆœνšŒν•˜λ©΄μ„œ mx[j] κ°€ i 번 ν”Œλ ˆμ΄μ–΄μ˜[j]번째 μΉ΄λ“œμ™€ 값이 κ°™λ‹€λ©΄, d[i + 1] 에 + 1을 ν•΄μ€€λ‹€.

  5. d 에 μ €μž₯된 κ°’ 쀑, κ°€μž₯ 큰 값을 골라낸 λ’€, mx_cnt 에 μ €μž₯ν•œλ‹€.

  6. dλ₯Ό μˆœνšŒν•˜λ©΄μ„œ mx_cnt 와 같은 값을 κ°€μ§„ ν‚€λ₯Ό res에 μ €μž₯ν•΄μ€€λ‹€.
    resλ₯Ό 좜λ ₯ν•  땐, μ˜€λ¦„μ°¨μˆœ 정렬을 ν•œ 번 μˆ˜ν–‰ν•΄μ€€ λ’€ 좜λ ₯ν•œλ‹€.

πŸ’Ύ λŠλ‚€μ 

  1. κ°„λ‹¨ν•˜κ²Œ ν’€ 수 μžˆμ—ˆλ˜ μ •λ ¬ λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€.
  2. μΉ΄λ“œμ˜ 숫자λ₯Ό 큰 μˆœμ„œλŒ€λ‘œ λ³΄μ•„μ•Όν•˜λŠ” 것을 λ– μ˜¬λ¦¬μ§€ λͺ»ν•΄ 쑰금 ν—€λ§ΈμŠ΅λ‹ˆλ‹€.
λ°˜μ‘ν˜•