© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 2863 - 이게 분수?

2025-07-15
BOJ
브론즈 III
python
원본 문제 보기
수학
구현
사칙연산

문제

BOJ 2863 - 이게 분수?

2x2 행렬의 네 원소 a, b, c, d가 주어진다. 이 행렬을 시계 방향으로 90도씩 회전할 때, a/c + b/d 값이 최대가 되는 회전 횟수를 구하라.

입력

첫 줄에 a, b, 둘째 줄에 c, d가 주어진다.

출력

a/c + b/d 값이 최대가 되는 회전 횟수(0~3)를 출력한다.

예제

입력출력
1 2 3 43

풀이

2x2 행렬을 0~3회 회전시킨 각 경우의 분수 값을 계산하여 최댓값의 인덱스를 구한다.

  1. 원래 배치 (a,b,c,d)에서 a/c + b/d를 계산한다
  2. 90도 회전하면 (c,a,d,b) → c/d + a/b가 된다
  3. 180도 회전하면 (d,c,b,a) → d/b + c/a가 된다
  4. 270도 회전하면 (b,d,a,c) → b/a + d/c가 된다
  5. 네 값 중 최댓값의 인덱스를 출력한다

핵심 아이디어: 2x2 행렬의 시계 방향 90도 회전은 (a,b,c,d) → (c,a,d,b)이다. 4번 회전하면 원래로 돌아오므로 0~3회만 확인하면 된다.

코드

a, b = map(int, input().split())
c, d = map(int, input().split())
f = []
f.append(a / c + b / d)
f.append(c / d + a / b)
f.append(d / b + c / a)
f.append(b / a + d / c)
f_max = max(f)
print(f.index(f_max))

복잡도

  • 시간: O(1) — 고정된 4번의 계산
  • 공간: O(1) — 4개의 값만 저장