코딩도장

숫자 정렬

자연수 리스트(홀수와 짝수의 개수가 같음)가 주어집니다.(예외 처리 필요) 이 리스트를 정렬해야 합니다. 순서는 홀-짝-홀-짝-...으로 오게 해야 하며, 홀수는 오름차순 정렬로, 짝수는 내림차순 정렬로 배치해야 합니다.

sample input

4 1 3 2 6 5

sample output

1 6 3 4 5 2
sort reverse

2021年07月15日 10:32

이준우

(追記) (追記ここまで)
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

65개의 풀이가 있습니다. 1 / 7 Page

a = [4,1,3,2,6,5,8,11] #자연수 List
hol = [] #홀수 list
chack = [] # 짝수 list
result = [] # 최종 결과
for i in a: #홀수와 짝수 구분하기
 if i%2 ==0:
 chack.append(i)
 else:
 hol.append(i)
hol.sort() #홀수 오름차순 정렬
chack.sort(reverse=True) #짝수 내림차순 정렬
for i in range(int(len(a)/2)): # 홀수 짝수 합치기.
 result.append(hol[i])
 result.append(chack[i])
print(result)

파이썬 공부하고 있는 초보자 입니다. 이렇게 풀어봤습니다.

2021年07月18日 10:24

안성우

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
sample_input = "413265"
odd = [int(x) for x in sample_input if int(x)%2==1]
even = [int(x) for x in sample_input if int(x)%2==0]
sample_output=[]
for i in range(3):
 sample_output.append(sorted(odd)[i])
 sample_output.append(sorted(even, reverse=True)[i])
print(sample_output)

2021年07月29日 20:00

로만가

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
from itertools import chain
nums = [4, 1, 3, 2, 6, 5]
even = sorted([x for x in nums if x % 2 == 0], reverse=True)
odd = sorted([x for x in nums if x % 2 == 1])
print(*chain(*zip(odd, even)))

2021年12月30日 23:35

Noname

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;
public class numberSort {
// 숫자 배열을 정렬하기 예를들어 홀짝 순으로 정렬하고
// 홀수는 오름차순 짝수는 내림 차순으로 정렬하기
 public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);
 //짝수 담는 배열
 ArrayList<Integer> oddNumber = new ArrayList<Integer>();
 //홀수 담는 배열
 ArrayList<Integer> notOddNumber = new ArrayList<Integer>();
 //배열 에 넣을 데이터 입력받기
 while (true) {
 System.out.print("배열에 넣을 정수를 입력하세요(999입력시 프로그램 종료) : ");
 int inputNumber = scanner.nextInt();
 scanner.nextLine(); // 엔터 버퍼 방지용
 if (inputNumber == 999) {
 break;
 }
 if(oddNumber.contains(inputNumber) || notOddNumber.contains(inputNumber) ) {
 System.out.println("중복!");
 }else {
 if (inputNumber % 2 == 0) {
 oddNumber.add(inputNumber);
 } else {
 notOddNumber.add(inputNumber);
 }
 }
 }
 // 배열 정렬
 notOddNumber.sort(Comparator.naturalOrder());
 oddNumber.sort(Comparator.reverseOrder());
 int index = 1;
 //두 배열 합치기
 for (int i = 0; i < oddNumber.size(); i ++ ) {
 if(index >= notOddNumber.size()) {
 notOddNumber.add(oddNumber.get(i));
 }else {
 notOddNumber.add(index, oddNumber.get(i));
 }
 index+=2;
 }
 // 배열 출력
 System.out.println(notOddNumber);
 }
}
if 를 너무 많이 썼네요..

2021年07月16日 11:34

이원희

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
public class Sorting {
 // constructor
 public Sorting(int[] sampleData) {
 partition(sampleData);
 ascendingOrderIt(sampleData);
 descendingOrderIt(sampleData);
 toInteger(sampleData);
 }
 // 홀, 짝 sorting
 public int[] partition(int[] sampleData) {
 return partition(0, sampleData);
 }
 private int[] partition(int i, int[] sampleData) {
 if(!(sampleData[i]%2==1 && sampleData[i+1]%2==0)) {
 swapData(i, i+1, sampleData);
 }
 if(i+2==sampleData.length)
 return sampleData;
 return partition(i+2, sampleData);
 }
 // 홀수 Sort - ascending order 
 public int[] ascendingOrderIt(int[] sampleData) {
 for(int i=0; i<sampleData.length; i++) {
 for(int j=i+2; j<sampleData.length;j++) {
 if(sampleData[i]>sampleData[j])
 swapData(i, j, sampleData);
 j=j+1;
 }
 i=i+1;
 }
 return sampleData;
 }
 // 짝수 Sort - descending order
 public int[] descendingOrderIt(int[] sampleData) {
 for(int i=1; i<sampleData.length; i++) {
 for(int j=i+2; j<sampleData.length; j++) {
 if(sampleData[i]<sampleData[j]) 
 swapData(i, j, sampleData);
 j=j+1;
 }
 i=i+1;
 }
 return sampleData;
 }
 // data swap
 private void swapData(int i, int j, int[] sampleData) {
 int temp = sampleData[i];
 sampleData[i]=sampleData[j];
 sampleData[j]=temp;
 }
 // print result
 public void toInteger(int[] sampleData) {
 for(int i=0; i<sampleData.length; i++)
 System.out.print(sampleData[i]+", ");
 }
 public static void main(String[] args) {
 int[] sampleData = {3, 4, 5, 2, 6, 1, 7, 10};
 new Sorting(sampleData); // 생성자 호출
 }
}
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
sample_input = [4,1,3,2,6,5] #주어진 값
a = [] #홀수 리스트
b = [] #짝수 리스트
result = [] #결과 리스트
sample_input.sort() #Sample 리스트를 오름차순으로 전체 정렬
for num in sample_input: #홀수와 짝수 나누기
 if num %2 != 0: #주어진값이 홀수 일 경우 홀수 리스트 추가
 a.append(num) 
 elif num%2 == 0: #주어진 값이 짝수 일 경우 짝수 리스트 추가
 b.append(num)
b.sort(reverse = True) #짝수만 내림차순으로 변경
while a or b : #홀수리스트 또는 짝수 리스트가 없을때까지 반복
 mark01 = a.pop(0) #mark01에 홀수 리스트 제일 앞에 있는 값을 추가 후 홀수 리스트에서는 삭제
 mark02 = b.pop(0) #mark02에 짝수 리스트 제일 앞에 있는 값을 추가 후 짝수 리스트에서는 삭제
 result.append(mark01) #결과 리스트에 mark01 값 추가
 result.append(mark02) #결과 리스트에 mark02 값 추가
print(result) #결과 리스트 출력
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

public static void main(String[] args){
 int[] input = {4 ,1 ,3 ,2 ,6 ,5};
 // 오름차순으로 정렬
 for(int i=0; i< input.length ; i++){
 for(int j = i+1; j < input.length ; j++){
 int sub; 
 if(input[i] > input[j]){
 sub = input[i]; 
 input[i] = input[j];
 input[j] = sub;
 }
 }
 }
 System.out.println();
 // 짝수만 내림차순으로 정렬
 for(int i=1; i< input.length ; i+=2){
 for(int j = i+2; j < input.length ; j+=2){
 int sub; 
 if(input[i] < input[j]){
 sub = input[i]; 
 input[i] = input[j];
 input[j] = sub;
 }
 }
 }
 // 출력
 for(int i =0; i < input.length ; i++) {
 System.out.print(input[i]);
 }
}

2021年08月01日 21:13

JUNYOUNG PARK

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
num_list = [4, 1, 3, 2, 6, 5]
h_list = []
j_list = []
hj_list = []
for i in num_list:
 if i % 2 == 0:
 j_list.append(i)
 else:
 h_list.append(i)
h_list.sort()
j_list.sort(reverse=True)
for i in range(3):
 hj_list.append(h_list[i])
 hj_list.append(j_list[i])
print(hj_list)

2021年08月07日 07:46

[w]*눈꽃*

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
input_list = [4, 1, 3, 2, 6, 5]
odd = [x for x in input_list if x%2 == 1]
even = [x for x in input_list if x%2 == 0]
result = [y for y in zip(sorted(odd), sorted(even, reverse=True))]
final = list(sum(result,()))
print(final)

2021年08月16日 12:36

이형우

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
N = list(map(int,input().split()))
N.sort()
result = []
for i in range(len(N)):
 if (N[i] % 2 == 1):
 result.append(N[i])
 elif (len(N)%2 == 0):
 result.append(N[len(N)-i])
 else:
 result.append(N[len(N)-(i+1)])
print(result)

2021年08月16日 15:40

BlakeLee

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

(注記) 풀이작성 안내
  • 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
  • 마크다운 문법으로 본문을 작성 해 주세요.
  • 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
  • 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
풀이 작성은 로그인이 필요합니다.
목록으로
코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.

sort x 2
reverse x 1
연관 문제
insperChoi, 2023年12月06日 20:57

언어별 풀이 현황
전 체 x 65
python x 48
java x 8
기 타 x 5
javascript x 1
objectivec x 1
cs x 1
cpp x 1
코딩도장 © 2014 · 문의 [email protected]
피드백 · 개인정보취급방침 · RSS

AltStyle によって変換されたページ (->オリジナル) /