728x90
문제
상근이는 덧셈과 나눗셈을 엄청나게 못한다.
이런 상근이를 위해 정인이는 상근이에게 다음과 같은 문제를 냈다.
정인이는 양의 정수 A,B,C,D로 이루어진 2*2 표를 그렸다.
A B
C D
위와 같은 표가 있을 때, 표의 값은 A/C + B/D 이다.
상근이는 표를 몇 번 돌리면 표의 값이 최대가 되는지 궁금해졌다.
표는 90도 시계방향으로 돌릴 수 있다
문제 상단의 표를 1번 회전 시키면 다음과 같다.
C A
D B
2번 회전 시키면 다음과 같이 된다.
D C
B A
표에 쓰여 있는 A,B,C,D가 주어졌을 때,
표를 몇 번 회전시켜야 표의 값이 최대가 되는지 구하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/2863
입력
첫째 줄에 A와 B가 공백으로 구분되어 주어진다.
둘째 줄에 C와 D가 공백으로 구분되어 주어진다.
모든 수는 100보다 작거나 같은 양의 정수이다.
출력
첫째 줄에 표를 몇 번 돌려야 표의 값이 최대가 되는지 출력한다.
만약, 그러한 값이 여러개라면 가장 작은 값을 출력한다.
예제
# input
1 2
3 4
# output
2
# input
5 9
7 2
# output
0
# input
41 99
100 13
# output
1
문제 풀이
# 1
A,B = map(int, input().split())
C,D = map(int, input().split())
cnt = 0
ans = {}
while cnt < 4:
ans[cnt] = A/C + B/D
tmp_A = A
tmp_B = B
tmp_C = C
tmp_D = D
A = tmp_C
B = tmp_A
C = tmp_D
D = tmp_B
cnt += 1
print(max(ans, key=ans.get))
# 2
A,B = map(int,input().split())
C,D = map(int,input().split())
max_value = 0
max_idx = 0
for i in range(4):
if max_value < A/C + B/C:
max_value = A/C + B/D
max_idx = i
A,B,C,D = C,A,D,B
print(max_idx)
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90