[Java] 자바 알고리즘, 백준 "세 수의 중간수 출력" 알고리즘 문제풀이

세 수


문제

세 정수 A, B, C가 주어진다. 이때, 두 번째로 큰 정수를 출력하는 프로그램을 작성하시오. 


입력

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)


출력

두 번째로 큰 정수를 출력한다.


테스트케이스


예제 입력 1  예제 출력 1 

20 30 10      20


예제 입력 2  예제 출력 2 

30 30 10      30


예제 입력 3  예제 출력 3 

40 40 40      40


예제 입력 4  예제 출력 4 

20 10 10      10


문제풀이


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Arrays;
import java.util.Scanner;
 
public class Example {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        int[] arr = new int[3];
        String[] inputArr = input.split(" ");
        arr[0]=Integer.parseInt(inputArr[0]);
        arr[1]=Integer.parseInt(inputArr[1]);
        arr[2]=Integer.parseInt(inputArr[2]);
        Arrays.sort(arr); //오름차순정렬 10 20 30 어차피 가운데꺼니까 arr[1]만 가져오면됨
        System.out.println(arr[1]);
    }
}
cs


이전에 본격적으로 학원을 다니기 전에 3학년인가 4학년시절에 이런것도 못풀던 시절에 실패한 기록이 남아있길래 뭐지하면서 지금풀어봤었는데 30초 안걸렸네요 푸는데.. 테스트까지하면 1분..? 약간 이 문제를 왜 못풀고 남겨놨을까 하는 의문이 드네요..

저는 이문제 풀면서 중요하다고 느낀것은 정렬!(자신이 직접 정렬알고리즘을 짜도 되지만 라이브러리가 잘 구현되어 있기 때문에...) 그리고 input이 고정적으로 3개가 들어온다는 것!!(여기서 배열의 길이를 고정적으로 선언 가능하다는 것을 캐치)

그리고 input의 구분자가 " "(공백) 이라는 점! (여기서 split메소드를 이용하면 되겠구나 캐치했음)

나머지는 순서대로 처리하면 될 것 같았고, 코드로 작성했더니 바로 정답이었습니다!!

댓글

Designed by JB FACTORY