[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€/python] μœ„ν΄λ¦¬ μ±Œλ¦°μ§€ 2μ£Όμ°¨ : μƒν˜Έ 평가

2021. 8. 13. 00:43

문제 μ„€λͺ…

λŒ€ν•™ ꡐ수인 당신은, μƒν˜Έν‰κ°€λ₯Ό ν†΅ν•˜μ—¬ 학생듀이 μ œμΆœν•œ κ³Όμ œλ¬Όμ— 학점을 λΆ€μ—¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€. μ•„λž˜λŠ” 0λ²ˆλΆ€ν„° 4λ²ˆκΉŒμ§€ λ²ˆν˜Έκ°€ 맀겨진 5λͺ…μ˜ 학생듀이 μžμ‹ κ³Ό λ‹€λ₯Έ ν•™μƒμ˜ 과제λ₯Ό ν‰κ°€ν•œ μ μˆ˜ν‘œμž…λ‹ˆλ‹€.

No. 0 1 2 3 4
0 100 90 98 88 65
1 50 45 99 85 77
2 47 88 95 80 67
3 61 57 100 80 65
4 24 90 94 75 65
평균 45.5 81.25 97.2 81.6 67.8
학점 F B A B D

μœ„μ˜ μ μˆ˜ν‘œμ—μ„œ, iν–‰ jμ—΄μ˜ 값은 i번 학생이 ν‰κ°€ν•œ j번 ν•™μƒμ˜ 과제 μ μˆ˜μž…λ‹ˆλ‹€.

  • 0번 학생이 ν‰κ°€ν•œ μ μˆ˜λŠ” 0번 ν–‰μ—λ‹΄κΈ΄ [100, 90, 98, 88, 65]μž…λ‹ˆλ‹€.
    • 0번 학생은 자기 μžμ‹ μ—κ²Œ 100점, 1번 ν•™μƒμ—κ²Œ 90점, 2번 ν•™μƒμ—κ²Œ 98점, 3번 ν•™μƒμ—κ²Œ 88점, 4번 ν•™μƒμ—κ²Œ 65점을 λΆ€μ—¬ν–ˆμŠ΅λ‹ˆλ‹€.
  • 2번 학생이 ν‰κ°€ν•œ μ μˆ˜λŠ” 2번 ν–‰μ—λ‹΄κΈ΄ [47, 88, 95, 80, 67]μž…λ‹ˆλ‹€.
    • 2번 학생은 0번 ν•™μƒμ—κ²Œ 47점, 1번 ν•™μƒμ—κ²Œ 88점, 자기 μžμ‹ μ—κ²Œ 95점, 3번 ν•™μƒμ—κ²Œ 80점, 4번 ν•™μƒμ—κ²Œ 67점을 λΆ€μ—¬ν–ˆμŠ΅λ‹ˆλ‹€.

당신은 각 학생듀이 받은 점수의 평균을 κ΅¬ν•˜μ—¬, 기쀀에 따라 학점을 λΆ€μ—¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€.
λ§Œμ•½, 학생듀이 자기 μžμ‹ μ„ ν‰κ°€ν•œ μ μˆ˜κ°€ μœ μΌν•œ 졜고점 λ˜λŠ” μœ μΌν•œ μ΅œμ €μ μ΄λΌλ©΄ κ·Έ μ μˆ˜λŠ” μ œμ™Έν•˜κ³  평균을 κ΅¬ν•©λ‹ˆλ‹€.

  • 0번 학생이 받은 μ μˆ˜λŠ” 0번 μ—΄μ— λ‹΄κΈ΄ [100, 50, 47, 61, 24]μž…λ‹ˆλ‹€. 자기 μžμ‹ μ„ ν‰κ°€ν•œ 100점은 μžμ‹ μ΄ 받은 점수 μ€‘μ—μ„œ μœ μΌν•œ μ΅œκ³ μ μ΄λ―€λ‘œ, 평균을 ꡬ할 λ•Œ μ œμ™Έν•©λ‹ˆλ‹€.
    • 0번 ν•™μƒμ˜ 평균 μ μˆ˜λŠ” (50+47+61+24) / 4 = 45.5μž…λ‹ˆλ‹€.
  • 4번 학생이 받은 μ μˆ˜λŠ” 4번 μ—΄μ— λ‹΄κΈ΄ [65, 77, 67, 65, 65]μž…λ‹ˆλ‹€. 자기 μžμ‹ μ„ ν‰κ°€ν•œ 65점은 μžμ‹ μ΄ 받은 점수 μ€‘μ—μ„œ μ΅œμ €μ μ΄μ§€λ§Œ 같은 μ μˆ˜κ°€ 2개 더 μžˆμœΌλ―€λ‘œ, μœ μΌν•œ μ΅œμ €μ μ΄ μ•„λ‹™λ‹ˆλ‹€. λ”°λΌμ„œ, 평균을 ꡬ할 λ•Œ μ œμ™Έν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
    • 4번 ν•™μƒμ˜ 평균 μ μˆ˜λŠ” (65+77+67+65+65) / 5 = 67.8μž…λ‹ˆλ‹€.

μ œμ™Έν•  μ μˆ˜λŠ” μ œμ™Έν•˜κ³  평균을 κ΅¬ν•œ ν›„, μ•„λž˜ 기쀀에 따라 학점을 λΆ€μ—¬ν•©λ‹ˆλ‹€.

평균학점

90점 이상 A
80점 이상 90점 미만 B
70점 이상 80점 미만 C
50점 이상 70점 미만 D
50점 미만 F

ν•™μƒλ“€μ˜ μ μˆ˜κ°€ λ‹΄κΈ΄ μ •μˆ˜ν˜• 2차원 λ°°μ—΄ scoresκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€. μ΄λ•Œ, ν•™μƒλ“€μ˜ 학점을 κ΅¬ν•˜μ—¬ ν•˜λ‚˜μ˜ λ¬Έμžμ—΄λ‘œ λ§Œλ“€μ–΄μ„œ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

μ œν•œμ‚¬ν•­

  • 2 ≤ scores의 ν–‰μ˜ 길이(학생 수) ≤ 10
  • scores의 μ—΄μ˜ 길이 = scores의 ν–‰μ˜ 길이
    • 즉, scoresλŠ” ν–‰κ³Ό μ—΄μ˜ 길이가 같은 2차원 λ°°μ—΄μž…λ‹ˆλ‹€.
  • 0 ≤ scores의 μ›μ†Œ ≤ 100
  • return κ°’ ν˜•μ‹
    • 0번 ν•™μƒμ˜ 학점뢀터 μ°¨λ‘€λŒ€λ‘œ 이어 뢙인 ν•˜λ‚˜μ˜ λ¬Έμžμ—΄μ„ return ν•©λ‹ˆλ‹€.

 

μ •λ‹΅

def solution(scores):
    answer = ''
    d = len(scores)

    new_scores = [[i[j] for i in scores] for j in range(d)]

    for i, std in enumerate(new_scores):
        n = std[i]
        if std.count(n) == 1 and (max(std) == n or min(std) == n):
            avg = (sum(std)-n) / (d-1)
        else:
            avg = sum(std) / d

        if avg >= 90:
            answer += 'A'
        elif avg >= 80:
            answer += 'B'
        elif avg >= 70:
            answer += 'C'
        elif avg >= 50:
            answer += 'D'
        else:
            answer += 'F'

    return answer

βœ” scoresλ₯Ό 뒀집어 new_scores에 λ„£μ–΄ μ‚¬μš©ν•˜κΈ°

βœ” count ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μœ μΌν•œ 졜고점 λ˜λŠ” μ΅œμ €μ μΈμ§€ ν™•μΈν•˜κΈ°

728x90

BELATED ARTICLES

more