본문 바로가기
Algorithm

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

by jangThang 2022. 12. 5.
반응형

백준 온라인 저지

 

 

 

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

반응형

댓글