Coding Test/프로그래머스(Python)
[프로그래머스/Python] Level 3_인사고과
syunze
2024. 3. 21. 16:28
📌문제 유형
정렬
📌문제
📌나의 문제풀이
- 92점
- scores를 점수 합계 기준으로 내림차순 정렬
- check에 완호보다 점수 큰 사람들 넣기
- check 안에서 제외될 사람은 cnt로 확인 -> cnt 수만큼 ans 제외
def solution(scores):
answer = 0
attitude, partner = scores[0]
scores.sort(key = lambda x:(x[0] + x[1]), reverse = True)
answer = scores.index([attitude,partner]) + 1
check = scores[:answer]
check.sort(key = lambda x:(x[1],x[0]), reverse = True)
cnt,flag = 0,0
for i in range(len(check)):
att, part = check[i]
for k in range(i+1):
if check[k][0] == att and check[k][1] == part:
continue
if att < check[k][0] and part < check[k][1]:
cnt += 1
if [att, part] == [attitude, partner]:
flag = 1
break
if flag == 1:
break
if flag == 1:
answer = -1
else:
answer -= cnt
return answer
📌다른사람의 문제풀이
def solution(scores):
answer = 0
target_a, target_b = scores[0]
target_score = target_a + target_b
# 첫번째 점수에 대해서 내림차순,
# 첫 번째 점수가 같으면 두 번째 점수에 대해서 오름차순으로 정렬합니다.
scores.sort(key=lambda x: (-x[0], x[1]))
maxb = 0
for a, b in scores:
if target_a < a and target_b < b:
return -1
if b >= maxb:
maxb = b
if a + b > target_score:
answer += 1
return answer + 1
📌리뷰
- 정렬 관계에 대해서 많이 생각해보기
728x90