[Bronze III] 이게 분수? - 2863
성능 요약
메모리: 14464 KB, 시간: 124 ms
분류
사칙연산(arithmetic), 구현(implementation), 수학(math)
문제 설명
상근이는 덧셈과 나눗셈을 엄청나게 못한다. 이런 상근이를 위해 정인이는 상근이에게 다음과 같은 문제를 냈다.
정인이는 양의 정수 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보다 작거나 같은 양의 정수이다.
출력
첫째 줄에 표를 몇 번 돌려야 표의 값이 최대가 되는지 출력한다. 만약, 그러한 값이 여러개라면 가장 작은 값을 출력한다.
풀이방법
회전할 때마다 하는 연산 값이 회전하기 전에 연산한 값보다 클 경우에만(같은 경우에는 가장 작은 값을 출력해야하기에 제외) 표를 돌려 값이 최대가 되게 한다.
느낀점
브론즈 문제를 들고 온 이유는.. 싸피에서 JAVA를 배우기 때문이다. 이제 알고리즘을 JAVA로 새로 배우고 있다. 확실히 기존에 사용하던 PYTHON보다 훨씬 까다롭고 코드가 길다. 우리반 전임교수님 말씀대로 JAVA로 알고리즘 문제를 풀다가 PYTHON문제를 풀면 쉽게 느껴지지만, 반대일 경우에 굉장히 복잡하고 어렵다는 게 너무 와닿았다.
사실 싸피 교육 환경이 거의 대외비라 블로그에 많이 기록하기가 어렵다는 점이 아쉽다. 단기간에 배운 것은 많은데 적을 수가 없다니.. 그래도 개인적으로 노션에 하루 하루를 기록하는 중.
요즘은 교육 때문에 SWEA(삼성 알고리즘 사이트)에서 문제를 많이 풀어야해서 백준은 자바 기초를 공부하는 느낌으로 낮은 난이도의 문제를 해결해나갈 예정이다.
- JAVA 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double[] arr = new double[4];
for(int i=0; i<4; i++)
arr[i]=sc.nextDouble();
double max=0;
int ans=0;
for(int i=0; i<4; i++){
double A=arr[0];
double B=arr[1];
double C=arr[2];
double D=arr[3];
if(max<A/C+B/D){
max=A/C+B/D;
ans=i;
}
arr[0]=C;
arr[1]=A;
arr[2]=D;
arr[3]=B;
}
System.out.println(ans);
}
}
- PYTHON 풀이
a, b = map(int,input().split())
c, d = map(int,input().split())
answer = []
re = a/c + b/d
cnt = 0
answer.append(c/d + a/b)
answer.append(d/b + c/a)
answer.append(b/a + d/c)
for i in range(len(answer)):
if re < answer[i]:
re = answer[i]
cnt = i+1
print(cnt)
'알고리즘' 카테고리의 다른 글
[SWEA] 1974. 스도쿠 검증 : JAVA (2) | 2023.01.13 |
---|---|
[SWEA] 1204. [s/w 문제해결 기본] 1일차 - 최빈수 구하기 : JAVA (3) | 2023.01.12 |
[Silver II] 용돈 관리 - 6236 (이분 탐색) (5) | 2023.01.10 |
[Silver II] 빠른 숫자 탐색 - 25416 (BFS) (4) | 2023.01.09 |
[Silver II] 과자 나눠주기 - 16401 (이분탐색) (3) | 2023.01.08 |