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
수정 아이콘
감사합니다 ㅠㅠ 또 새로운거 배워가네요... 파이썬 알면알수록 편리한게 많네요..!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
93096 [질문] 최순실 스캔들, 그 이후 Red_alert1388 16/11/14 1388
93095 [질문] 볼빨간 사춘기 콘서트 갈 방법이 없나요 이제? [6] 언뜻 유재석2759 16/11/14 2759
93094 [질문] [스타1] 피쉬서버 방만들기 안됩니다. [1] 삭제됨2922 16/11/14 2922
93093 [질문] 아이패드 구매 추천 [14] Someknown2132 16/11/14 2132
93092 [질문] 별정통신 엠모바일 질문드립니다. [6] UniYuki2352 16/11/14 2352
93091 [질문] 플스4.pc겸용 가성비좋은 모니터 추천부탁드려요 선동가2822 16/11/14 2822
93090 [질문] KBO 시상식 티켓 한장 나눔합니다. [5] 마둘리1748 16/11/14 1748
93089 [질문] 컴퓨터 책상에 스피커2세트(다합해서 4개)쓰시는 분 있나요? 교강용1536 16/11/14 1536
93088 [질문] 팝업창이 계속 사라집니다 [1] aSlLeR2553 16/11/14 2553
93087 [질문] [조조전 온라인] 사건 인장개수가 보상에 영향을 미치나요? [11] pk4568 16/11/14 4568
93086 [질문] 택배 (티켓) 배송 사고 문의입니다 [3] 플리퍼1859 16/11/14 1859
93085 [질문] 파워가 터졌는데 어떻게 해야할까요? [4] 집나간흰둥님1737 16/11/14 1737
93084 [질문] [해외여행]다음주에 태국 여행 질문 드립니다.(환전 및 날씨 등등 관련) [2] 파쿠만사2211 16/11/14 2211
93083 [질문] 폰트 질문 있습니다~ [2] 리니시아1720 16/11/14 1720
93082 [질문] 금융권 it는 전부 논술형도 쳐야하나요? (경력직 포함) [3] 삭제됨2096 16/11/14 2096
93081 [질문] 조조전 온라인 해외에서... [1] 가렌2326 16/11/14 2326
93080 [질문] 지갑 도난당했습니다.. [5] 바쁜벌꿀2797 16/11/14 2797
93079 [질문] 데스티니차일드 일본관련 어떻게 생각하세요? [19] 나른한오후4035 16/11/14 4035
93078 [질문] 컴 샀습니다.. 뭔겜부터 해야하나요 [33] 롯데닦이5017 16/11/14 5017
93077 [질문] 지사제 질문입니다. [1] 삭제됨1615 16/11/14 1615
93076 [질문] 의학, 금융, 투자에 대한 어느정도 지식을 쌓는 법이있을까요? [2] Ciara.1774 16/11/14 1774
93075 [질문] 강남 근처에 칵테일 괜찮은 가게있을까요? [4] SKYCEN2255 16/11/14 2255
93074 [질문] 중국 사이트에서 다운로드 막히는 문제.. [6] 부사3096 16/11/13 3096
목록 이전 다음
댓글

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