PS/Baekjoon Online Judge

[백준 02863] 이게 분수? [Java]

kimyoungrok 2023. 11. 8. 15:40
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가 주어졌을 때, 표를 몇 번 회전시켜야 표의 값이 최대가 되는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 공백으로 구분되어 주어진다. 둘째 줄에 C와 D가 공백으로 구분되어 주어진다. 모든 수는 100보다 작거나 같은 양의 정수이다.

 

출력

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


풀이

두 줄에 걸쳐 입력받은 정수를 오른쪽으로 회전하며 A/C + B/D를 구하는 문제다.

배열 또는 4개의 변수에 돌아가며 대입을 하며 계산을 해도 풀이할 수 있지만,

배열에 A, B 를 (0, 3)번 에 C, D를 (1, 2)번 index에 넣어준다면

회전과정에 대해 아래와 같은 규칙이 존재한다.

0-1-2-3을 순회한다.

 

계산 결과가 정수이면 정확한 비교가 불가능하니 double로 입력받자.

 

loop 내 동일한 나머지 연산자를 적용한 계산식을 통해 몇 번(cnt) 회전할 때 최댓값인지 계산해주자.

  


소스코드

보기


출처

 

2863번: 이게 분수?

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

www.acmicpc.net

728x90

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 02875] 대회 or 인턴 [Java]  (0) 2023.11.09
[백준 01321] 군인 [Java]  (1) 2023.11.08
[백준 01049] 기타줄 [Java]  (0) 2023.11.04
[Baekjoon Online Judge] 카테고리 공지  (0) 2023.11.04
깃허브 404가 뜬다면...  (0) 2023.11.04