본문 바로가기

건승하고있어요/알고리즘

[sort] 두 번째로 큰 숫자 출력하기

반응형

문제: 세 정수를 입력 받고(1<=N<=100) 두 번째로 큰 정수를 출력하는 프로그램을 작성하라.

(출처: https://www.acmicpc.net/problem/10817)



앞선 버블소트 문제를 풀고 난 다음에 이 문제를 풀려고 하니 금방 풀렸다.

오름차순으로 정렬한 다음에(세 개의 숫자라서 내림차순도 상관은 없겠다) 그냥 두 번째 숫자만 꺼내오면 되니까.

심지어 숫자도 3개만 받으면 돼서 훨씬 쉬운 문제였다. 그래서 앞선 문제와 별반 다를 게 없다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import java.util.Scanner;
 
public class ABC {
    
    public static void main(String[] args) {
        
        Scanner scan = new Scanner(System.in);
        
        int A = scan.nextInt();
        int B = 0;
        int C = 0;
        
        boolean YN = true;
        //입력받는 값이 범위 내에 있는지 확인하는 while문 돌리기
        while(YN) {
            if(A>100 || A<1) {
                System.out.println("다시 입력해주세요");
                A = scan.nextInt();
            } else {
                YN = false;
                B = scan.nextInt();
                YN = true;
                while(YN) {
                    if(B>100 || B<1) {
                        System.out.println("다시 입력해주세요");
                        B = scan.nextInt();
                        
                    } else {
                        YN = false;
                        C = scan.nextInt();
                        YN = true;
                        while(YN) {
                            if(C<1 || C>100) {
                                System.out.println("다시 입력해주세요");
                                C = scan.nextInt();
                            } else {
                                YN = false;
                            }
                        }
                    }
                }
            }
        }
        
        //A, B, C가 무엇을 입력 받았는지 확인        
        System.out.println(A + " " + B + " " + C + " ");
 
        //임시자리 변수 선언
        int temp = 0;
        
        //자리를 비교하기 위한 배열 선언 
        int array[] = new int[3];
        array[0= A;
        array[1= B;
        array[2= C;
        
        //버블소트 돌리기
        for(int i=0 ; i<2 ; i++) {
            for(int j=0 ; j<2 ; j++) {
                if(array[j]>array[j+1]) {
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1= temp;
                }
            }
        }
        
 
        
        System.out.println("두 번째로 큰 수: " + array[1]);
        
        scan.close();
    }
 
}
 
cs


반응형