티스토리 뷰

반응형

https://programmers.co.kr/learn/courses/30/lessons/85002

 

코딩테스트 연습 - 6주차_복서 정렬하기

복서 선수들의 몸무게 weights와, 복서 선수들의 전적을 나타내는 head2head가 매개변수로 주어집니다. 복서 선수들의 번호를 다음과 같은 순서로 정렬한 후 return 하도록 solution 함수를 완성해주세요

programmers.co.kr

 


⊙ 문제

⊙ 제한사항

⊙ 입출력 예

⊙ 입출력 예 설명

 


 

⊙ 문제 접근 과정

 

1️⃣ info란 배열을 먼저 만들어줬다.

 

2️⃣ info 배열 안에 인자를 [선수 번호, 몸무게, 승률, 나보다 무거운 복서 이긴 횟수]로 가져갔다.

 

3️⃣ lamda를 활용하여 승률 -> 나보다 무거운 복서 이긴 횟수 -> 몸무게 -> 선수 번호를 참조하도록 설정해주었다.

 

4️⃣ 선수 번호에 +1을 더하여 (인덱스는 0부터이기 때문) 출력해줬다.

 


 

⊙ 문제 풀이

 

def solution(weights, head2head):
    info = []
    heavierCnt = [0 for _ in range(len(weights))]
    
    for i in range(len(head2head)):
        if head2head[i].count("W"):
            for j in range(len(head2head[i])):
                if head2head[i][j] == "W":
                    if weights[i]<weights[j]:
                        heavierCnt[i]+=1
    
    for i in range(len(head2head)):
        info.append((i,weights[i],0 if not (len(head2head)-head2head[i].count("N")) else head2head[i].count("W")/(len(head2head)-head2head[i].count("N")), heavierCnt[i]))
            
    info = sorted(info, key=lambda x:(x[2],x[3],x[1],-x[0]), reverse=True)
    
    return [i[0]+1 for i in info]

⊙ 마무리

 

 

와 파이썬 정렬 람다 신세계

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함