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
수정 아이콘
감사합니다 ㅠㅠ 또 새로운거 배워가네요... 파이썬 알면알수록 편리한게 많네요..!
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
91367 [질문] 제품 / 식당 등 리뷰 일베 vs 네이버블로그 어디가 더 신뢰가시나요? [17] 콜라제로3097 16/10/12 3097
91366 [질문] 놋북 코어2듀오 vs i3-6세대 [5] 스타더스트2878 16/10/12 2878
91365 [질문] 단통법 시행 2년 어떻게 생각하시나요 [21] 도들도들2946 16/10/12 2946
91364 [질문] 면세점 이용 문의 회색사과2330 16/10/12 2330
91363 [질문] 태블릿은 보통 어디서 구매하나요? [13] 모카치노3802 16/10/12 3802
91362 [질문] 종로 귀금속 거리에서 순금 악세사리를 살 때 주의할 점이 뭐가 있을까요? [2] 피시앤칩스2772 16/10/12 2772
91361 [질문] 중고피시를 새로 구입햇는데 화면이 안나와요 [4] 레드드레곤~2436 16/10/12 2436
91360 [질문] 엄지발톱이 꺾이면서... [3] 삐니키니1810 16/10/12 1810
91359 [질문] 지하철 에스컬레이터 공사기간이 긴 이유가 있나요? [8] 멍멍머멈엉멍4604 16/10/11 4604
91358 [질문] 아이폰 백업 질문입니다. 도와주세요.. [3] 노대누대2715 16/10/11 2715
91357 [질문] 노트7인터넷구매자들 사은품은 어찌되나요? [4] 하이킹베어3131 16/10/11 3131
91356 [질문] 다들 pgr 접속 잘 되시나요? [3] 아치spirit2233 16/10/11 2233
91355 [질문] [LOL] 라이즈 어떻게 상대하나요? [6] 아름답고큽니다3384 16/10/11 3384
91354 [질문] [LOL] 서버점검 시간동안 기간제 부스트도 홀딩되나요? [14] 스타듀밸리3784 16/10/11 3784
91353 [질문] C언어 DFS 알고리즘 질문입니다. [7] 임수향4018 16/10/11 4018
91352 [질문] 기어즈 오브 워4, 어떠신가요? [2] 불같은 강속구2115 16/10/11 2115
91351 [질문] [던파] 질문입니다.. [2] 건이강이별이2186 16/10/11 2186
91350 [질문] 무역에서 인코텀즈 조건에 대해 질문합니다. [2] 송하나2161 16/10/11 2161
91349 [질문] [폰교체] LG V20 평이 어떤가요? [6] RickBarry5426 16/10/11 5426
91348 [질문] [LOL] 롤이 갑자기 뚝뚝 끊깁니다.. [14] Hisoka4629 16/10/11 4629
91347 [질문] 안경을 사려고 합니다ㅠ.ㅠ [11] 영원한우방3660 16/10/11 3660
91346 [질문] 혹시 조조전 모바일 하고 계시는 분 있나요? [12] Lavigne3818 16/10/11 3818
91345 [질문] 강아지 중성화 수술 하는게 맞는건가요? [10] 유부초밥3098 16/10/11 3098
목록 이전 다음
댓글

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