파이썬 질문입니다.

조회수 989회

자연수 6개를 순서대로 입력받아 리스트를 생성한 후 출력한다. 이후 아래 규칙에 따라 재배치한 리스트를 출력한다.

  1. 입력받은 자연수들 중 홀수만을 추출하여 내림차순으로 정렬한 뒤, 순서대로 빈 리스트에 추가한다.
  2. 입력받은 자연수들 중 짝수만을 추출하여 내림차순으로 정렬한 뒤, 순서대로 1에서 생성한 리스트의 뒤에 추가한다.

[입력 예시 1] 5 2 6 4 3 1

[출력 예시 1] [5, 2, 6, 4, 3, 1] [5, 3, 1, 6, 4, 2]

[입력 예시 2] 10 5 8 45 3 153

[출력 예시 2] [10, 5, 8, 45, 3, 153] [153, 45, 5, 3, 10, 8] 어떻게 풀어요...?

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 숙제를 그대로 올리지 마세요. nowp 2019.12.16 22:49
  • 방학시즌 아닌가요? 방학이라서 숙제요청은 이제 없나보다...생각하고 있었는데... 정영훈 2019.12.17 01:11

2 답변

  • mainList = [];
    odd=[];
    even=[];
    parCnt = 6;
    for i in range(parCnt):
        val = int(input());
        mainList.append(val);
    print (mainList);
    for i in mainList:
        if i%2==0:
            even.append(i);
        else:
            odd.append(i);
    even.sort(); even.reverse();
    odd.sort(); odd.reverse();
    mainList = odd + even;
    print (mainList);
    

    이게 적당할가요??

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • 조금 파이써닉하게 작성할 수도 있습니다.

    In [1]: s = '5 2 6 4 3 1'
    
    In [2]: L = [int(i)for i in s.split()]
    
    In [3]: sorted(i for i in L if i & 1)[::-1] + sorted(i for i in L if not i & 1)[::-1]                     
    Out[3]: [5, 3, 1, 6, 4, 2]
    
    In [4]: sorted((i for i in L if i & 1), reverse=True) + sorted((i for i in L if not i & 1), reverse=True) 
    Out[4]: [5, 3, 1, 6, 4, 2]
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)