SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
์ค๋ช
ํ์ ์ด A+ ๋ถํฐ D0๊น์ง ์ด 10๊ฐ์ ํ์ ์ด ์๋ค. ์ด์ ์ ์ค๊ฐ๊ณ ์ฌ(35%) + ๊ธฐ๋ง๊ณ ์ฌ(45%) + ๊ณผ์ (20%) ๋น์จ๋ก ๋ฐ์๋๋ค. 10๊ฐ์ ํ์ ์ ์ด์ ์ด ๋์ ์์๋๋ก ๋ถ์ฌํ๋ค.(์ด๊ฒ ๋ณธ๋ฌธ์ ) ๊ฐ๊ฐ์ ํ์ ์ ๊ฐ์ ๋น์จ๋ก ๋ถ์ฌํ ์ ์๋ค. ํ์ ์ ์๊ณ ์ถ์ K๋ฒ์งธ ํ์์ ๋ฒํธ๊ฐ ์ฃผ์ด์ก์ ๋ K๋ฒ์งธ ํ์์ ํ์ ์ ์ถ๋ ฅํด์ผ ํ๋ค.
ํ
์คํธ์ผ์ด์ค์ ์ฒซ ๋ฒ์งธ ์ค์ ํ์์ N๊ณผ ํ์ ์ ์๊ณ ์ถ์ ํ์์ ์ K๊ฐ ์ฃผ์ด์ง๋ค.
ํ
์คํธ์ผ์ด์ค์ ๋ ๋ฒ์งธ ์ค๋ถํฐ ๊ฐ๊ฐ์ ํ์์ด ๋ฐ์ ์ํ ๋ฐ ๊ณผ์ ์ ์๊ฐ ์ฃผ์ด์ง๋ค.
ํ์ด
1. ํ ๋ฆฌ์คํธ์ ํ์ ์ ๋ค ์ ์ฅํ๋ค.
2. ์ํ ๋ฐ ๊ณผ์ ๋น์จ๋ ์์ผ๋ 100์ ๋ง์ ์ผ๋ก ํ์ฐํ๊ณ ๋ฆฌ์คํธ์ ๋ฃ๋๋ค.
3. k๋ฒ์งธ์ ์ ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ ๋ฐ๋ก ์ ์ฅํ๋ค. (์ ๋ ฌํ๋ฉด k๋ฒ์งธ๋ฅผ ์ ์ ์์ผ๋ ๋ฐ๋ก ์ ์ฅํด๋๋ ๊ฒ)
4. ํ์ฐํ ์ ์๋ฅผ ๋ด์ ๋ฆฌ์คํธ๋ฅผ sort ํจ์๋ฅผ ์ฌ์ฉํด ์ ๋ ฌํ๋ค.
5. n์ 10์ผ๋ก ๋๋์ด์ ๋์จ ๋ชซ์ ๋ฐ๋ก ์ ์ฅํ๋ค.
6. ์ ์ ๋ฆฌ์คํธ์์ k๋ฒ์งธ์ ์ ์์ ์ธ๋ฑ์ค๋ฅผ 5๋ฒ์์ ๋์ถ๋ ๋ชซ์ผ๋ก ๋๋๊ณ ์ ์ฅํ๋ค.
7. ํ์ ์ด ์ ์ฅ๋ ๋ฆฌ์คํธ์ k๋ฒ์งธ๋ฅผ ์ฐพ์ ์ถ๋ ฅํ๋ค.
TIL
• list.index(๊ฐ) - ๋ฆฌ์คํธ์์ ๊ฐ์ ํด๋นํ๋ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ค.
Solution
t = int(input())
grade = ["A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"]
def calc_score(mid, fin, assi): #์ด์ ๊ณ์ฐ
return (0.35*mid) + (0.45*fin) + (0.2*assi)
for i in range(1, t+1):
n, k = map(int, input().split())
store_score = [] #ํ์ฐํ ์ ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฆฌ์คํธ
for j in range(n): #ํ์๋ค ์ ์ ๋ชจ๋ ์
๋ ฅ๋ฐ๊ธฐ
mid, fin, assi = map(int, input().split()) #์ค๊ฐ, ๊ธฐ๋ง, ๊ณผ์
store_score.append(calc_score(mid, fin, assi)) #๊ณ์ฐํ ์ด์ ์ ๋ฆฌ์คํธ์ ๋ชจ๋ ์ ์ฅ
k_score = store_score[k-1] #k๋ฒ์งธ ์ ์๋ฅผ ๋ฐ๋ก ์ ์ฅ
store_score.sort(reverse=True) #์ ์ ๋ฆฌ์คํธ๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
value = n // 10 #๋ฌธ์ ์์ ์ฃผ์ด์ง, ๋ง์ฝ n= 20์ผ ๋ 2๋ช
์ฉ ๋์ผํ ์ ์๊ฐ ๋ถ์ฌ๋๋ค๋ ๊ฒ
ans = store_score.index(k_score) // value #์ ์ ๋ฆฌ์คํธ์์ k๋ฒ์งธ์ ์ ์์ ์ธ๋ฑ์ค๋ฅผ value๋ก ๋๋
print("#"+str(i),grade[ans]) #๋ฑ๊ธ ์ค k๋ฒ์งธ ์ธ๋ฑ์ค์ ๋์ผํ ํ์ ์ ๋ฐํํ๋ค.
๐ฉ๐ป ํ๊ณ
t = int(input())
grade = ["A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"]
ans = [] #๊ฒฐ๊ณผ๊ฐ
def calc_score(mid, fin, assi):
prev_score = 0
prev_score = round((0.35*mid) + (0.45*fin) + (0.2*assi), 1) #์์์ ์ฒซ์งธ์๋ฆฌ๊น์ง๋ง ๋ฐ์ฌ๋ฆผํ๊ณ ๋๋จธ์ง ๋ฒ๋ฆผ
return prev_score #์๊ฐํด๋ด์ผ ํ ์ , ์ ์๋ก ๊ณ์ฐํ๋๋ ์์์ ๊น์ง ๊ณ์ฐํ๋๋
def rating_score(score): #ํ์ ๋ถ์ฌ
if k == 1:
return grade[0]
else:
score[0] = grade[0] # ์ฒซ ๋ฒ์งธ ํ์ ๋ฏธ๋ฆฌ ๋ถ์ฌ
for i in range(len(grade)):
cnt = 0
for key, value in score.items():
if value == k: #๋ง์ฝ value๋ k๋ ๊ฐ์ ๋
return grade[i]
elif score[key-1][value-1] == score[key][value]: #๋ง์ฝ ์ด์ ๊ณผ ๋์ผํ ์ ์๊ฐ ์๋ ๋
score[j] = grade[i] #ํ์ฌ ํ์ ์ ๋ถ์ฌํ๊ณ break
break #๋ ๋ฒ์งธ for๋ฌธ ๋๋ด๊ธฐ
else: #์ด์ ๊ณผ ๋์ผํ ์ ์์ด๋ฉด
score[j] = score[j-1] #์ด์ ๊ณผ ๋์ผํ๊ฒ ๋ถ์ฌ
break
for i in range(1, t+1):
n, k = map(int, input().split())
store_score = [] #ํ์ฐํ ์ ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฆฌ์คํธ
for j in range(n): #ํ์๋ค ์ ์ ๋ชจ๋ ์
๋ ฅ๋ฐ๊ธฐ
mid, fin, assi = map(int, input().split()) #์ค๊ฐ, ๊ธฐ๋ง, ๊ณผ์
store_score.append(calc_score(mid, fin, assi)) #๊ณ์ฐํ ์ด์ ์ ๋ฆฌ์คํธ์ ๋ชจ๋ ์ ์ฅ
#[74.6, 92.6, 88.8, 99.5, 72.3, 85.9, 96.2, 69.0, 85.5, 85.8]
dict_score = {int:k for k, int in enumerate(store_score)} #๋ฆฌ์คํธ๋ฅผ ๋์
๋๋ฆฌ๋ก ๋ณํ์ํค๊ณ ์ธ๋ฑ์ค ๊ฐ ๋ถ์ฌ=๋์
๋๋ฆฌ ์ปดํ๋ฆฌํจ์
)
#{74.6: 0, 92.6: 1, 88.8: 2, 99.5: 3, 72.3: 4, 85.9: 5, 96.2: 6, 69.0: 7, 85.5: 8, 85.8: 9}
score = sorted(dict_score.items(), reverse=True) #items() : ๋์
๋๋ฆฌ key๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
#[(99.5, 3), (96.2, 6), (92.6, 1), (88.8, 2), (85.9, 5), (85.8, 9), (85.5, 8), (74.6, 0), (72.3, 4), (69.0, 7)]
#๋์
๋๋ฆฌ๋ ํจ์ ์ธ์๋ก ์ ๋ฌ ๊ฐ๋ฅํ๋ค
print("#"+str(i),rating_score(score))
k๋ฒ์งธ ๊ฐ์ ๋ฐ๋ก ์ ์ฅํด ๋ ์๊ฐ์ ๋ชปํ๊ณ ๋๋ฌด ์ด๋ ต๊ฒ๋ง ์๊ฐํด์ ์๋ฌ๋๊ณ , ์๊ฐ๋ ์ค๋ ๊ฑธ๋ ค์ ๊ฒฐ๊ตญ ํ์ด๋ฅผ ๋ดค๋ค. ํ์ ์ ๋ถ์ฌํ๋ ๊ณผ์ ์ด ์กฐ๊ธ ํ๋ค์๋ค. index ๋ด์ฅ ํจ์๋ ์๊ฒ ๋์ผ๋ ๋ค์์ ์ด๋ฐ ์ ํ์ด ๋์จ๋ค๋ฉด ๊ฐ์ ๋ฐ๋ก ์ ์ฅํด์ ์ฌ์ฉํ ์๊ฐ์ ํด๋ณด์.
'๐งฉ Algorithm > SWEA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SWEA] 1970. ์ฌ์ด ๊ฑฐ์ค๋ฆ๋ (Python/D2) (2) | 2023.11.06 |
|---|---|
| [SWEA] 1204. ์ต๋น์ ๊ตฌํ๊ธฐ (Python/D2) (1) | 2023.11.02 |
| [SWEA] 1984. ์ค๊ฐ ํ๊ท ๊ฐ ๊ตฌํ๊ธฐ (Python/D2) (1) | 2023.11.01 |
| [SWEA] 1966. ์ซ์๋ฅผ ์ ๋ ฌํ์ (Python/D2) (2) | 2023.10.31 |
| [SWEA] 1936. 1๋1 ๊ฐ์๋ฐ์๋ณด (Python/D1) (0) | 2023.10.30 |