[白俊]1946号:新入社員(Python)



質問する



私の最初の答え

t=int(input())

for i in range(t):
    n=int(input())
    p=[]
    cnt=1
    
    for j in range(n):
        grade,rank=map(int,input().split())#성적, 면접순위
        p.append([grade,rank])

    p.sort()#성적으로 정렬하기
    mn=p[0][1]#성적이 1등인 사람의 면접 순위를 저장

    for k in range(1,n):#1등을ㅇ 제외하고
        if mn>p[k][1]:#2등부터 n등까지 면접순위 비교, mn이 더 크다면
            cnt+=1#인원수 증가
            mn=p[k][1]#해당 값으로 mn 초기화
    print(cnt)
結果はタイムアウトを示した.
複数の繰り返し文があり、I/Oが継続しているため、I/O時間をsys.stdin.readlineに短縮する必要があります.

私の最終的な答え

import sys
input=sys.stdin.readline

t=int(input())

for i in range(t):
    n=int(input())
    p=[]
    cnt=1
    
    for j in range(n):
        grade,rank=map(int,input().split())#성적, 면접순위
        p.append([grade,rank])

    p.sort()#성적으로 정렬하기
    mn=p[0][1]#성적이 1등인 사람의 면접 순위를 저장

    for k in range(1,n):#1등을 제외하고
        if mn>p[k][1]:#2등부터 n등까지 면접순위 비교, mn이 더 크다면
            cnt+=1#인원수 증가
            mn=p[k][1]#해당 값으로 mn 초기화
    print(cnt)
方法
  • の最低価格に近づくことができます.(ギリシャ問題)
  • の1位は無条件で当選する.したがって,各分野の1位を基準に比較すればよい.
  • の成績を基準にして、成績が同じであれば、面接ランキングの高い人を選びます.