코딩 테스트/프로그래머스
[Python] 프로그래머스 lv.0 전국 대회 선발 고사
위시리
2024. 11. 27. 13:53
문제 분석
- 참여 가능한 등수 높은 3명 선발
- 3명의 등수에 따라 1등의 rank 인덱스*10000 + 2등의 rank 인덱스*100 + 3등의 rank 인덱스
정답 코드
실패..
def solution(rank, attendance):
answer = 0
std = []
for i in range(len(rank)):
# 참가 가능한 학생만 남기기
if attendance :
std.append(rank[i])
sorted(rank, reverse=True)[:3]
answer = rank[0]*10000 + rank[1]*100 + rank[2]
return answer
다른 사람 코드 1
def solution(rank, attendance):
arr = sorted([(x, i) for i, x in enumerate(rank) if attendance[i]])
return arr[0][1] * 10000 + arr[1][1] * 100 + arr[2][1]
- 등수에 따른 정렬을 할 거기 때문에 for i, x로 받고, (x,i)로 정렬
다른 사람 코드 2
def solution(rank, attendance):
selected = []
for i, attend in enumerate(attendance):
if attend:
selected.append((rank[i], i))
selected.sort()
a, b, c = selected[:3]
return 10000 * a[1] + 100 * b[1] + c[1]
다른 사람 코드 3
def solution(rank, attendance):
lst = []
for i in range(len(rank)):
if attendance[i]:
lst.append((rank[i],i))
lst.sort()
return 10000*lst[0][1]+100*lst[1][1]+lst[2][1]
다른 사람 코드 4
def solution(rank, attendance):
answer = 0
n = len(rank)
s = []
for i,v in enumerate(rank):
if attendance[i] == True:
s.append([v,i])
s.sort()
a,b,c = s[0][1],s[1][1],s[2][1]
return 10000 * a + 100 * b + c