[Programmers] - 2μ£Όμ°¨

μ˜€λ™ν›ˆΒ·2021λ…„ 8μ›” 11일
0

Programmers

λͺ©λ‘ 보기
56/64
post-thumbnail

1. Problem πŸ“ƒ

πŸ“š 좜처 - ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

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

No.01234
010090988865
15045998577
24788958067
361571008065
42490947565
평균45.581.2597.281.667.8
학점FBABD

μœ„μ˜ μ μˆ˜ν‘œμ—μ„œ, 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 ν•©λ‹ˆλ‹€.

μž…μΆœλ ₯ 예

scoresresult
[[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]]"FBABD"
[[50,90],[50,87]]"DA"
[[70,49,90],[68,50,38],[73,31,100]]"CFD"

μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #1

문제 μ˜ˆμ‹œμ™€ κ°™μŠ΅λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #2

No.01
05090
15087
평균5090
학점DA
  • 1번 학생이 자기 μžμ‹ μ„ ν‰κ°€ν•œ 87점은 [90, 87]μ—μ„œ μœ μΌν•œ μ΅œμ €μ μ΄λ―€λ‘œ, 평균을 ꡬ할 λ•Œ μ œμ™Έν•©λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #3

No.012
0704990
1685038
27331100
평균70.33…4064
학점CFD
  • 1번 학생이 자기 μžμ‹ μ„ ν‰κ°€ν•œ 50점은 [49, 50, 31]μ—μ„œ μœ μΌν•œ μ΅œκ³ μ μ΄λ―€λ‘œ, 평균을 ꡬ할 λ•Œ μ œμ™Έν•©λ‹ˆλ‹€.
  • 2번 학생이 자기 μžμ‹ μ„ ν‰κ°€ν•œ 100점은 [90, 38, 100]μ—μ„œ μœ μΌν•œ μ΅œκ³ μ μ΄λ―€λ‘œ, 평균을 ꡬ할 λ•Œ μ œμ™Έν•©λ‹ˆλ‹€.

2. Logic πŸ‘¨β€πŸ«

  1. 행을 λ¨Όμ € λΉ„κ΅ν•¨μœΌλ‘œμ¨ 자기 점수λ₯Ό μž„μ‹œμ˜ λ¦¬μŠ€νŠΈμ— μΆ”κ°€
  2. 자기 μžμ‹ μ΄ μ±„μ ν•œ 값이 max κ°’μ΄λ‚˜ min κ°’μ΄λ©΄μ„œ, 받은 점수 쀑에 μœ μΌν•œ 값일 λ•Œ μ œμ™Έ
  3. 평균을 λ‚Έ ν›„, ν•™μ μœΌλ‘œ λ°˜ν™˜ν•΄μ£ΌκΈ°

3. Code πŸ’»

1. λ‚΄κ°€ ν‘Ό μ½”λ“œπŸ˜

def cal(score):
    if 90 <= score:
        return 'A'
    elif 80 <= score:
        return 'B'
    elif 70 <= score:
        return 'C'
    elif 50 <= score:
        return 'D'
    else:
        return 'F'

def solution(scores):
    answer = ''
    for i in range(len(scores)):
        tmp = []
        for j in range(len(scores)):
            tmp.append(scores[j][i])
        if (scores[i][i] == max(tmp)) & (tmp.count(max(tmp)) == 1):
            del tmp[i]
        elif (scores[i][i] == min(tmp)) & (tmp.count(min(tmp)) == 1):
            del tmp[i]
        answer += cal(sum(tmp) / len(tmp))
    return answer

4. Feedback πŸ“š

이 문제λ₯Ό ν’€κΈ° 전에 μžκΈ°κ°€ 받은 μ μˆ˜λ“€ 쀑 μ΅œλŒ“κ°’μ΄ μ΅œμ†Ÿκ°’μ΄ 겹치게 되면 μ–΄λ–»κ²Œ μ œμ™Έν• κΉŒλ₯Ό κ³ λ―Όν–ˆλŠ”λ° λ³€μˆ˜λ₯Ό ν•˜λ‚˜ 더 μΆ”κ°€ν•΄ λ…Έκ°€λ‹€λ‘œ ν’€μ–΄μ•Όν•˜λ‚˜.. μƒκ°ν–ˆλŠ”λ° μ—­μ‹œ μ°Ύμ•„λ³΄λ‹ˆκΉ count λΌλŠ” ν•¨μˆ˜κ°€ μ‘΄μž¬ν–ˆλ‹€.
count ν•¨μˆ˜λŠ” μ–΄λ–€ 리슀트 λ‚΄ λ‚΄κ°€ μ›ν•˜λŠ” 값을 λ„£μ–΄μ£Όκ²Œ 되면, κ·Έ 값이 λͺ‡ κ°œκ°€ μ‘΄μž¬ν•˜λŠ”μ§€ 개수λ₯Ό λ°˜ν™˜ν•΄μ£ΌλŠ” ν•¨μˆ˜μΈλ° μ•”νŠΌ 결둠은 λ‚΄κ°€ μƒκ°ν•˜λŠ” 것은 인터넷상에 이미 μžˆμœΌλ‹ˆκΉ 겁먹지 말고 μ°Ύμ•„λ³΄μžλ‹€~~~!!! 그럼 ν™”μ΄λœŒπŸ˜Š

profile
μ‚½μ§ˆμ˜ 기둝듀πŸ₯

0개의 λŒ“κΈ€