파이썬 질문입니다.
조회수 989회
자연수 6개를 순서대로 입력받아 리스트를 생성한 후 출력한다. 이후 아래 규칙에 따라 재배치한 리스트를 출력한다.
- 입력받은 자연수들 중 홀수만을 추출하여 내림차순으로 정렬한 뒤, 순서대로 빈 리스트에 추가한다.
- 입력받은 자연수들 중 짝수만을 추출하여 내림차순으로 정렬한 뒤, 순서대로 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] 어떻게 풀어요...?
-
(•́ ✖ •̀)
알 수 없는 사용자
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]
댓글 입력