곽로그

[백준 10817] 세 수 본문

알고리즘/백준

[백준 10817] 세 수

일도이동 2019. 4. 16. 21:19
반응형

 

 

10817번: 세 수

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

www.acmicpc.net

접근법 1

 이 문제를 쉽게 접근 할 수 있는 방법 중 하나는 정렬을 이용하는 것이다. 입력받은 숫자를 배열에 저장하여 정렬한 다음 인덱스 1에 있는 숫자를 출력하면 된다. 이 방법은 쉽게 할 수 있으므로 패스

 

접근법 2

 정렬을 모른다고 가정할 때, 접근할 수 있는 방법은 모든 경우의 수를 따지는 것이다. 즉 A,B,C가 가질 수 있는 관계의 모든 경우의 수를 구하면 된다. 3가지 수 밖에 안되기 때문에 세어볼 만 하다. 

 

1,2,3으로 예를 들어 보자. ABC의 관계로는 1) 모두 다른 수 2) 두개가 같은 수 3) 3개가 같은 수가 있을 수 있다. 따라서 A,B,C,가 가질 수 있는 관계를 나열하면 다음과 같다.

 

순서대로 A,B,C

1 2 3 (A<B<C)

1 3 2 (A<C<B)

2 1 3 (B<A<C)

2 3 1 (C<A<B)

3 1 2 (B<C<A)

3 2 1 (C<B<A)

1 1 2 (A=B<C)

1 2 1 (A=C<B)

2 1 1 (B=C<A)

1 1 1 (A=B=C)

 

이렇게 10가지이다. 이걸 if문으로 구현하기 위해서 아래와 같은 수형도를 생각할 수있다. 

피피티는 괴로워

이걸 if문으로 구현하면 아래와 같다. 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		//세 정수 A, B, C가 주어진다. 이때, 두 번째로 큰 정수를 출력하는 프로그램을 작성하시오. 
		Scanner in=new Scanner(System.in);
		int A=in.nextInt();
		int B=in.nextInt();
		int C=in.nextInt();
		
		if(A>=B) {
			if(B>=C) {
				System.out.println(B);
			}
			else if(C>=A) {
				System.out.println(A);
			}
			else {
				System.out.println(C);
			}
		}
		else if (A>C){
			System.out.println(A);
		}
		else if(B>C) {
			System.out.println(C);
		}
		else
			System.out.println(B);
		
			
	}
}
 	
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준 1546] 평균  (0) 2019.04.17
[백준 10871] X보다 작은 수  (0) 2019.04.17
[백준 11721] 열 개씩 끊어 출력하기  (0) 2019.04.16
[백준 11720] 숫자의 합  (0) 2019.04.15
[백준 8393] 합  (0) 2019.04.15
Comments