반응형
문제: 세 정수를 입력 받고(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 |
반응형
'건승하고있어요 > 알고리즘' 카테고리의 다른 글
[for문] n의 합 (0) | 2018.01.28 |
---|---|
[별찍기] 요리조리 별찍기 (0) | 2018.01.28 |
[별찍기] 세상 쉬운 별찍기(인데 나는 못함) (0) | 2018.01.28 |
[sort] 설탕배달하기 (0) | 2018.01.28 |
[sort] 오름차순 버블정렬 (0) | 2018.01.28 |