동규는 세수를 하다가 정렬이 하고싶어졌다.
숫자 세 개를 생각한 뒤에, 이를 오름차순으로 정렬하고 싶어 졌다.
숫자 세 개가 주어졌을 때, 가장 작은 수, 그 다음 수, 가장 큰 수를 출력하는 프로그램을 작성하시오.
숫자 세 개가 주어진다. 이 숫자는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 숫자는 모두 다르다.
제일 작은 수, 그 다음 수, 제일 큰 수를 차례대로 출력한다.'
내가 한 구현
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<3;i++)
list.add(Integer.parseInt(tokenizer.nextToken()));
Collections.sort(list);
for(int n:list)
System.out.print(n+" ");
}
}
다른분께서 하신 더 좋은 코딩
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuffer sb = new StringBuffer();
int[] arr;
try {
arr = new int[3];
String[] s = br.readLine().split(" ");
for(int i=0; i<3; i++)
arr[i] = Integer.parseInt(s[i]);
selectionSort(arr);
for(int i : arr)
sb.append(i).append(" ");
System.out.println(sb);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void selectionSort(int[] arr) {
int min;
for(int i=0; i<arr.length-1; i++) {
min = i;
for(int j=i+1; j<arr.length; j++) {
if(arr[j] < arr[min])
min = j;
}
int tmp = arr[i];
arr[i] = arr[min];
arr[min] = tmp;
}
}
}