Coding Test
[프로그래머스] 6주차_복서 정렬하기
상상쓰
2021. 9. 6. 16:15
https://programmers.co.kr/learn/courses/30/lessons/85002
코딩테스트 연습 - 6주차
복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요
programmers.co.kr
한 행을 수행하면서 정렬할 조건의 값들을 모두 구한다.
[승률, 자기보다 무거운 복서를 이긴 횟수, 몸무게, 선수 번호]
위 배열의 순서대로 비교하고 승률, 자기보다 무거운 복서를 이긴 횟수, 몸무게는 내림차순으로 선수 번호는 오름차순으로 정렬해서 선수 번호를 출력해야 하므로 내림차순으로 정렬하는 조건의 값에 -1을 곱해준 다음 sorted() 를 취한 후 차례대로 선수 번호를 출력하면 된다.
def solution(weights, head2head):
answer = []
N = len(weights)
dic = dict(zip(range(N), weights))
I = 0
for w, h in zip(weights, head2head):
W, T, S = 0, 0, 0
for i in range(N):
if h[i] != 'N':
T += 1
if h[i] == 'W':
W += 1
if w < dic[i]:
S += 1
I += 1
answer.append([-W/T if T != 0 else 0, -S, -w, I])
answer = list(map(lambda x : x[3], sorted(answer)))
return answer
print(solution([50, 82, 75, 120], ['NLWL', 'WNLL', 'LWNW', 'WWLN'])) # [3, 4, 1, 2]