PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2016/10/11 20:21:48
Name Patrick Jane
Subject [질문] 파이썬 프로그래밍 질문입니다!
파이썬 문제푸는중에 어떻게 구현할지 모르겠어서 아이디어를 얻고자 올렸습니다 ㅠㅠ.
우선 문제는


도현이네 반 학생 N명의 이름과 국어, 영어, 수학 점수가 주어진다. 이 때, 다음과 같은 조건으로 학생의 성적을 정렬하는 프로그램을 작성하시오.

국어 점수가 감소하는 순서로
국어 점수가 같으면 영어 점수가 증가하는 순서로
국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로
모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로

해서 단순하게 버블소트로 제어문 몇개 넣어서 만들었습니다.
a=int(input());squ2=[];re=0
squ=[input().split() for x in range(a)]
for i in range(a):
    for j in range(1,4):
        squ[i][j]=int(squ[i][j])
for i in range(a):
    max=0;k=['zzz',0,100,0]
    for j in range(a-i):
        if squ[j][1] > k[1]:    #국어 내림차순
            k=squ[j];re=j
        elif squ[j][1] == k[1]:  
            if squ[j][2] < k[2]:     #영어 오름차순
                k=squ[j];re=j
            elif squ[j][2] == k[2]:
                if squ[j][3] > k[3]:     #수학 내림차순
                    k=squ[j];re=j
                elif squ[j][3] == k[3]:
                    if squ[j][0] < k[0]:
                        k=squ[j];re=j
    squ2.append(k)
    del squ[re]
for p in range(a):
    print (squ2[p][0])

이렇게 했더니 샘플 인풋 아웃풋은 맞는데, 시간초과가 뜨더라구요... 혹시 다른아이디어 있으신분 계신가요?
시간제한은 1초입니다!!
b = sorted(sorted(a, key = lambda x : x[0]), key = lambda x : x[1], reverse = True)
이런식으로 하려했더니 같으면 내림차순 or 오름차순이라는거에 맞지않게 sort를 하더라구요...

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
회색사과
16/10/11 20:28
수정 아이콘
제어문을 쓸 게 아니라...
이름 오름차순 정렬 - 수학점수 내림차순 정렬 - 영어 점수 오른차순 정렬 - 국어 내림차순 정렬 (버블소트에 =은 다 빼고)

돌리면 되지 않을까요?

(그런데 라이브러리 쓰면 안되나요?... 복수 기준 정렬 하는 라이브러리가 있었던 것 같은데...)
회색사과
16/10/11 20:30
수정 아이콘
Patrick Jane
16/10/11 20:58
수정 아이콘
감사합니다! 링크랑 밑에분 댓글보고 새로운거 배워갑니당....
묘이미나
16/10/11 20:45
수정 아이콘
lambda 를 이용하여 multiple key 로 sorted 가 가능 합니다.
tuple 을 이용해서 순서를 구성해주면 끝입니다.
오름차순 내림차순은 +/- 를 붙이면 됩니다.
lambda x:(-x[1],-x[2],-x[3],x[0])

>> data = [['kim',90,90,80],['lee',90,80,70],['amy',90,90,80],['terry',90,90,70],['kei',80,100,70]]
라고 하면,
>> sorted(data, key = lambda x:(-x[1],-x[2],-x[3],x[0]))
를 실행하면,
[['amy', 90, 90, 80], ['kim', 90, 90, 80], ['terry', 90, 90, 70], ['lee', 90, 80, 70], ['kei', 80, 100, 70]]와 같은 결과를 얻습니다.

국어, 영어, 수학을 내림차순으로 하기 때문에, (-) 를 추가하고,
이름은 오름차순이기 때문에, 그대로 두면 됩니다.
Patrick Jane
16/10/11 20:59
수정 아이콘
감사합니다 ㅠㅠ 또 새로운거 배워가네요... 파이썬 알면알수록 편리한게 많네요..!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
94025 [질문] 아이패드 미개봉상태에서 금새 방전될까요? [8] Norm5042 16/11/30 5042
94024 [질문] 디자이너용 컴퓨터, 사양 어떤걸 구매해야할까요 레스토랑스2217 16/11/30 2217
94023 [질문] 시계 추천 바랍니다. [18] 루이츠5293 16/11/30 5293
94022 [질문] 관악산 초행 예정입니다.. 질문 드립니다! [4] OPS1688 16/11/30 1688
94021 [질문] [질문] 빌라 관리비 걷는 문제 [6] 디제이유기견2356 16/11/30 2356
94020 [질문] . [2] 삭제됨3308 16/11/30 3308
94019 [질문] 게임 패드로 할만한 게임 추천해주세요 [12] 톰슨가젤연탄구이5433 16/11/30 5433
94018 [질문] 페이팔에서 온 메일 해석 좀 부탁드립니다. 네오크로우2345 16/11/30 2345
94017 [질문] 12.9일 탄핵표결한다고 쳤을때, 새누리에서 필리버스터하면 어떻게 되나요? [4] 光海2728 16/11/30 2728
94016 [질문] 포장이사 관련 질문입니다.(이사 처음 해보네요) [9] SarAng_nAmoO2961 16/11/30 2961
94015 [질문] 탄핵의결은 2번 못하나요? [6] 율리우스 카이사르2290 16/11/30 2290
94014 [질문] 스마트 워치 추천 부탁 드립니다. (골프) [1] 목화씨내놔2577 16/11/30 2577
94013 [질문] 단기간에 토익점수 올리려면 LC vs RC [8] cjhhh1233351 16/11/30 3351
94012 [질문] [LOL] kt 이적 소식 [4] 내사랑사랑아2811 16/11/30 2811
94011 [질문] 여자랑 출장가서 신경쓰인다는 여친 어떻게 하죠? [41] 칼퇴추구자6557 16/11/30 6557
94010 [질문] 겨울철 차량 운전시 김서림 제거법? [9] 나른한오후2226 16/11/30 2226
94009 [질문] 변기가 막혔습니다 [15] 손연재3338 16/11/30 3338
94008 [질문] 우선순위를 매긴 설문지 SPSS 통계내기 [9] 호랑이기운이쑥쑥8337 16/11/30 8337
94007 [질문] 이혼시 주식분할에 관하여. [5] 삭제됨3397 16/11/30 3397
94006 [질문] [스타1] 방금 만든 맵인데 피지알분들에게 평가를 받아보고 싶습니다. [18] 삭제됨2440 16/11/30 2440
94005 [질문] 음악을 찾습니다(음계밖에 모릅니다) cadenza791875 16/11/30 1875
94004 [질문] 소개팅 후 대처 질문입니다. [8] WOGUS883150 16/11/30 3150
94003 [질문] [연애]여자사람친구와 애매한 관계... 어떻게 매듭을 지어야 할까요? [37] 삭제됨9239 16/11/30 9239
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로