😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[Softeer] python [인증평가(5μ°¨) 기좜] 성적 평가 λ³Έλ¬Έ

πŸ¦₯ μ½”ν…Œ/Softeer

[Softeer] python [인증평가(5μ°¨) 기좜] 성적 평가

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 1. 7. 00:18
728x90
λ°˜μ‘ν˜•

<λ³Έ λΈ”λ‘œκ·ΈλŠ” Softeer의 μ½”λ”©ν…ŒμŠ€νŠΈ 문제λ₯Ό μ°Έκ³ ν•΄μ„œ κ³΅λΆ€ν•˜λ©° μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€>

https://softeer.ai/practice/info.do?idx=1&eid=1309 

 

Softeer

μ—°μŠ΅λ¬Έμ œλ₯Ό 담을 Set을 μ„ νƒν•΄μ£Όμ„Έμš”. μ·¨μ†Œ 확인

softeer.ai

 

⭐ 문제

언어별 μ‹œκ°„/λ©”λͺ¨λ¦¬
Python 2초 1024MB

문제
ν˜„μ£ΌλŠ” Nλͺ…μ˜ 인원이 μ°Έμ—¬ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° μŠ€ν„°λ”” 그룹을 이끌고 μžˆλ‹€.

ν˜„μ£ΌλŠ” μŠ€ν„°λ””λ₯Ό μœ„ν•΄ λŒ€νšŒλ₯Ό μ„Έ κ°œ κ°œμ΅œν•˜μ˜€κ³ , λͺ¨λ“  κ΅¬μ„±μ›μ΄ κ° λŒ€νšŒμ— μ°Έμ—¬ν•˜μ˜€λ‹€. μ°Έκ°€μžλŠ” κ° λŒ€νšŒμ—μ„œ 0 μ΄μƒ 1,000 μ΄ν•˜μ˜ μ •μˆ˜μΈ μ μˆ˜λ₯Ό μ–»λŠ”λ‹€. ν•œ λŒ€νšŒμ—μ„œ λ‘˜ μ΄μƒμ˜ μ°Έκ°€μžκ°€ λ™μ μ΄ λ‚˜μ˜€λŠ” κ²½μš°λ„ μžˆμ„ μˆ˜ μžˆλ‹€.

ν˜„μ£ΌλŠ” κ° λŒ€νšŒλ³„ λ“±μˆ˜ λ° μ΅œμ’… λ“±μˆ˜λ₯Ό λ§€κΈ°κ³  μ‹Άλ‹€. λ“±μˆ˜λŠ” κ°€μž₯ μ μˆ˜κ°€ λ†’은 μ‚¬λžŒλΆ€ν„° 1λ“±, 2λ“±, ···, Nλ“±μ˜ μˆœμ„œλŒ€λ‘œ λΆ™λŠ”λ‹€. λ§ŒμΌ λ™μ μ΄ μžˆμ„ κ²½μš° κ°€λŠ₯ν•œ λ†’은 (λ“±μˆ˜μ˜ μˆ˜κ°€ μž‘은) λ“±μˆ˜λ₯Ό λΆ€μ—¬ν•œλ‹€. μ¦‰, μ μˆ˜κ°€ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ 10,7,6,6,4의 μˆœμ„œμΌ κ²½μš°, 6점을 λ°›μ€ λ‘ μ‚¬λžŒμ€ κ³΅λ™ 3등이 λ˜κ³ , κ·Έ λ‹€μŒ μˆœμ„œμΈ 4점을 λ°›μ€ μ‚¬λžŒμ€ 5등이 λœλ‹€. μ΄ κ·œμΉ™μ„ λ‹€λ₯΄κ²Œ ν‘œν˜„ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€: κ° μ‚¬λžŒλ§ˆλ‹€ “λ‚˜λ³΄λ‹€ μ μˆ˜κ°€ ν° μ‚¬λžŒ”의 μˆ˜λ₯Ό μ„Έμ–΄ 1을 λ”ν•œ κ²ƒμ΄ μžμ‹ μ˜ λ“±μˆ˜κ°€ λœλ‹€. λŒ€νšŒλ³„ λ“±μˆ˜λŠ” κ° λŒ€νšŒμ—μ„œ μ–»μ€ μ μˆ˜λ₯Ό κΈ°μ€€μœΌλ‘œ ν•˜λ©° μ΅œμ’… λ“±μˆ˜λŠ” μ„Έ λŒ€νšŒμ˜ μ μˆ˜μ˜ ν•©μ„ κΈ°μ€€μœΌλ‘œ ν•œλ‹€.

각 μ°Έκ°€μžμ˜ λŒ€νšŒλ³„ λ“±μˆ˜ 및 μ΅œμ’… λ“±μˆ˜λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μ œμ•½μ‘°κ±΄
3 ≤ N ≤ 100,000

μž…λ ₯ν˜•μ‹
첫째 μ€„에 μ°Έκ°€μžμ˜ μˆ˜λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ N이 μ£Όμ–΄μ§„λ‹€.
이어 μ„Έ κ°œμ˜ μ€„에 κ° λŒ€νšŒμ˜ κ²°κ³Όλ₯Ό λ‚˜νƒ€λ‚΄λŠ” N개의 μ •μˆ˜κ°€ μ£Όμ–΄μ§„λ‹€. μ΄μ€‘ i번째 μ •μˆ˜λŠ” κ·Έ λŒ€νšŒμ—μ„œ i번째 μ‚¬λžŒμ΄ μ–»μ€ μ μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€.

좜λ ₯ν˜•μ‹
첫 μ„Έ κ°œμ˜ μ€„μ—λŠ” κ° μ°Έκ°€μžμ˜ λŒ€νšŒλ³„ λ“±μˆ˜λ₯Ό μΆœλ ₯ν•œλ‹€. 
즉 μ΄μ€‘ c번째 μ€„μ˜ i번째 μ •μˆ˜λŠ” c번째 λŒ€νšŒμ—μ„œμ˜ i번째 μ‚¬λžŒμ˜ λ“±μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€.

이어 μƒˆλ‘œμš΄ μ€„에 κ°™μ€ ν˜•μ‹μœΌλ‘œ κ° μ°Έκ°€μžμ˜ μ΅œμ’… λ“±μˆ˜λ₯Ό μΆœλ ₯ν•œλ‹€.

μž…λ ₯예제1
3
40 80 70
50 10 20
100 70 30

좜λ ₯예제1
3 1 2
1 3 2
1 2 3
1 2 3

 

βœ… Code

*λŠ” unpacking μ—­ν• 

# 각 μ‚¬λžŒλ§ˆλ‹€ “λ‚˜λ³΄λ‹€ μ μˆ˜κ°€ 큰 μ‚¬λžŒ”의 수λ₯Ό μ„Έμ–΄ 1을 λ”ν•œ 것이 μžμ‹ μ˜ λ“±μˆ˜κ°€ λœλ‹€
# λŒ€νšŒλ³„ λ“±μˆ˜λŠ” 각 λŒ€νšŒμ—μ„œ 얻은 점수λ₯Ό κΈ°μ€€μœΌλ‘œ ν•˜λ©° μ΅œμ’… λ“±μˆ˜λŠ” μ„Έ λŒ€νšŒμ˜ 점수의 합을 κΈ°μ€€
# 각 μ°Έκ°€μžμ˜ λŒ€νšŒλ³„ λ“±μˆ˜ 및 μ΅œμ’… λ“±μˆ˜λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨

import sys
input = sys.stdin.readline

N = int(input())

table = []
for _ in range(N) :
    table.append(list(map(int, input().split())))

# 전체 λ“±μˆ˜
total_score = [0] * N
for i in range(len(table)) :
    result = []

    for j in range(N) :
        rank = 1
        total_score[j] += table[i][j]
        for k in range(N) :
            if table[i][j] < table[i][k] :
                rank += 1
        result.append(rank)     # 각 λŒ€νšŒμ˜ λ“±μˆ˜
    print(*result)

total_rank = []
for i in range(N) :
    rank = 1
    for j in range(N) :
        if total_score[i] < total_score[j] :
            rank += 1
    total_rank.append(rank)

print(*total_rank)
728x90
λ°˜μ‘ν˜•
Comments