본문 바로가기
Algorithm

[구현/수학] 백준 2863 이게 분수? - 자바(Java), 파이썬(Python)

by jangThang 2022. 12. 5.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    2863번: 이게 분수?

    첫째 줄에 표를 몇 번 돌려야 표의 값이 최대가 되는지 출력한다. 만약, 그러한 값이 여러개라면 가장 작은 값을 출력한다.

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     네 정수 A, B, C, D가 주어집니다. 

     위 경우 A/C + B/D로 계산하며, 90도씩 오른쪽으로 회전하며 가장 큰 값을 찾습니다.

     

     

     

    3. 코드

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		// 입력
    		Scanner sc = new Scanner(System.in);
    		double a = sc.nextDouble();
    		double b = sc.nextDouble();
    		double c = sc.nextDouble();
    		double d = sc.nextDouble();
    		
    		double zero = a/c + b/d;
    		double one = c/d + a/b;
    		double two = d/b + c/a;
    		double three = b/a + d/c;
    		
    		// 비교
    		if((zero >= one) && (zero >= two) && (zero >= three)) {
    			System.out.println(0);
    		}
    		else if((one >= zero) && (one >= two) && (one >= three)) {
    			System.out.println(1);
    		}
    		else if((two >= zero) && (two >= one) && (two >= three)) {
    			System.out.println(2);
    		}
    		else {
    			System.out.println(3);
    		}
    	}
    }

     Java의 경우, 분수 계산 시 캐스팅에 유의해야 합니다. int / int = int이므로 소수점 아래 부분이 짤립니다.

     따라서, 처음부터 Double로 정수를 받아서 계산합니다.

     

     

    # 입력
    a, b = map(int, input().split())
    c, d = map(int, input().split())
    
    # 가장 큰 값 출력
    array = [a/c+b/d, c/d+a/b, d/b+c/a, b/a+d/c]
    print(array.index(max(array)))

     반면 파이썬의 경우에는 캐스팅을 신경 쓸 필요가 없습니다. 가장 큰 수의 인덱스를 출력합니다.

    (코드 길이의 차이가 심하긴 하네요..)

     

    star가 되고나서 Tistory

    반응형

    댓글