문제 : 백준 2752. 세수정렬
백준 2752. 세수정렬
동규는 세수를 하다가 정렬이 하고 싶어졌다.
정수 세 개를 생각한 뒤에, 이를 오름차순으로 정렬하고 싶어졌다.
정수 세 개가 주어졌을 때, 가장 작은 수, 그 다음 수, 가장 큰 수를 출력하는 프로그램을 작성하시오.
정수 세 개가 주어진다. 이 수는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 수는 모두 다르다.
제일 작은 수, 그 다음 수, 제일 큰 수를 차례대로 출력한다.
처음 생각했을 때, 생각했던 로직은 다음과 같다
(1) 정수 3개를 배열로 받는다.
(2) 배열을 반복문을 통해 비교한다.
(3) 조건문을 통해서 실질적으로 순서 할당
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] arr= new int[3];
Scanner sc = new Scanner(System.in);
arr[0] = sc.nextInt();
arr[1] = sc.nextInt();
arr[2] = sc.nextInt();
for (int i=0; i<3; i++)
for(int j=0; j<2 ; j++)
if(arr[j] > arr[j+1]) {
int temp = 0;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
System.out.print(arr[0]+" ");
System.out.print(arr[1]+" ");
System.out.print(arr[2]+" ");
}
}
for (int i=0; i<3; i++)
for(int j=0; j<2 ; j++)
if(arr[j] > arr[j+1]) {
int temp = 0;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
위에 구현한 코드는 이렇게 아래와 같이 작성할 수 있음
Arrays.sort(arr);
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
/* 풀이 접근 방법
배열을 만든 후 해당 배열 안에 입력값들을 받은 후
Arrays.sort()를 이용해서 오름차순으로 정렬 뒤 차례대로 출력
*/
//입력 받은 값 만큼의 배열을 만든 후 배열 크기 설정
int[] arr = new int[3];
//반복문을 통해 arr의 크기 만큼 입력값 받기
//보통 배열을 이용할 때 초기식의 초기값은 0으로 시작하는 게 좋음
for(int i = 0; i<arr.length; i++) {
//arr.length의 크기는 3번이니 총 3번의 값을 받음
arr[i] = sc.nextInt();
}
//arr을 오름차순으로 배열
Arrays.sort(arr);
//차례대로 출력
for(int i : arr) {
System.out.printf("%d ", i);
}
}
}
오늘도 맛있는 모닝야미 끝