인프런 커뮤니티 질문&답변

김민섭님의 프로필 이미지
김민섭

작성한 질문수

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

BOJ23246

해결된 질문

작성

·

155

1

 

N = int(input())

words = [list(map(int, input().split())) for _ in range(N)]

medal = sorted(words, key= lambda x : (x[1]*x[2]*x[3], x[1]+x[2]+x[3]))

for i in range(0,3):

print(medal[i][0], end = ' ')

 

다음은 제가 짠 코드입니다.

 

n = int(input())

infos = [list(map(int, input().split())) for _ in range(n)]

infos = sorted(infos, key=lambda x : (x[1] x[2] x[3], x[1] + x[2] + x[3], x[0]))

for b, p, q, r in infos[:3]:

print(b, end=' ')

 

이건 알리님 코드인데요,

마지막 for문 빼고는 똑같은데, 이상하게 제거는 틀렸다고 뜨네요.

시간 복잡도 때문일까요?? 이유 알려주시면 감사하겠습니다

답변 2

1

알리 Ally님의 프로필 이미지
알리 Ally
지식공유자

안녕하세요. 김민섭님!

 

이미 파악해서 말씀하신대로,

문제의 마지막 조건인 '곱한 점수와 합한 점수가 모두 같으면 등번호가 낮은 선수가 이긴다는 조건'을 누락해서 틀리신 것 같습니다.

 

또 궁금하신 점 있으시면 언제든 질문 부탁드립니다.

감사합니다. :)

1

김민섭님의 프로필 이미지
김민섭
질문자

아 해결했습니다 람다 함수에 마지막 조건을 넣어주지 않았네요

김민섭님의 프로필 이미지
김민섭

작성한 질문수

질문하기