반응형
문제
상근이는 덧셈과 나눗셈을 엄청나게 못한다. 이런 상근이를 위해 정인이는 상근이에게 다음과 같은 문제를 냈다.
정인이는 양의 정수 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보다 작거나 같은 양의 정수이다.
출력
첫째 줄에 표를 몇 번 돌려야 표의 값이 최대가 되는지 출력한다. 만약, 그러한 값이 여러개라면 가장 작은 값을 출력한다.
예제 입력 1 복사
1 2
3 4
예제 출력 1 복사
2
출처
Contest > Croatian Open Competition in Informatics > COCI 2010/2011 > Contest #3 1번
#include<stdio.h>
int main(void)
{
int A, B, C, D;
double temp, max = 0;
int t,ans;
scanf("%d %d", &A, &B);
scanf("%d %d", &C, &D);
double a[4] = { A,B,D,C };
for (int i = 0; i < 4; i++)
{
temp = double(a[0] / a[3] + a[1] / a[2]);
if (temp > max)
{
max = temp;
ans = i;
}
t = a[3];
a[3] = a[2];
a[2] = a[1];
a[1] = a[0];
a[0] = t;
}
printf("%d",ans);
}
처음에 int a[4]; 라고 배열 타입을 정수형으로 하여
18번째 줄인 temp = double(a[0] / a[3] + a[1] / a[2]); 에서 temp 값이 제대로 나오지 않았다. 자료형에 주의해야 겠다.
https://www.acmicpc.net/problem/2863
반응형
'🧩PS > 🥈Nomal' 카테고리의 다른 글
[C/C++] 백준 10804번 카드 역배치 (0) | 2020.04.11 |
---|---|
[C/C++] 백준 2748번 피보나치 수 2 동적 계획법(DP, Dynamic Programming) 풀이(+재귀, 반복알고리즘) (0) | 2020.04.10 |
[C/C++] 백준 15969번 행복 (0) | 2020.04.08 |
[C/C++] Codeforce 158B - Taxi (0) | 2020.04.04 |
[C/C++] Codeforce 160A - Twins (0) | 2020.04.04 |