728x90
https://www.acmicpc.net/problem/2477
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int k = Integer.parseInt(br.readLine()), a = 6, i;
int len[] = new int[a];
for (i = 0; i < a; ++i)
len[i] = Integer.parseInt(br.readLine().split(" ")[1]);
br.close();
int w_val, h_val, w_idx, h_idx, x_val, y_val, l;
w_val = h_val = 0;
w_idx = h_idx = -1;
for (i = 0; i < a; i += 2) {
l = len[i];
if (h_val < l) {
h_val = l;
h_idx = i;
}
}
for (i = 1; i < a; i += 2) {
l = len[i];
if (w_val < l) {
w_val = l;
w_idx = i;
}
}
x_val = len[(h_idx + 3) % a];
y_val = len[(w_idx + 3) % a];
System.out.println((w_val * h_val - x_val * y_val) * k);
}
}
입력값이 반시계방향으로 둘레를 돌며 지나는 변의 길이이므로
어느 점에서 출발하든 상관 없다. 고로 입력값에서 방향은 고려하지 않았다.
문제에서 제시된 밭의 모양은 ㄱ자(또는 회전한) 모양이고, 둘레 돌 때 코너에서 90도씩 꺾인다
가로 변(선분)과 세로 변 길이가 번갈아가며 입력된다
따라서 짝수/홀수 번째에 위치한 변들은 같은 종류이다
인덱스 | 방향 | 길이 | 종류 |
0 | 4 | 50 | 세로 |
1 | 2 | 160 | 가로 |
2 | 3 | 30 | 세로 |
3 | 1 | 60 | 가로 |
4 | 3 | 20 | 세로 |
5 | 1 | 100 | 가로 |
또한 큰 직사각형의 가로/세로 길이 (w, h) 는 제일 길며 나머지 두 길이의 합이다
그리고 작은 직사각형의 가로/세로 길이 (x, y) 는 w, h 가 위치한 인덱스에서 각각 3칸 떨어진 인덱스의 값이다
( h 에서 3칸 => x ) ( w 에서 3칸 => y )
인덱스 | 방향 | 길이 | |
0 | 4 | 50 | h ┐ |
1 | 2 | 160 | w ┐│ |
2 | 3 | 30 | │ │ |
3 | 1 | 60 | x │ ┘ |
4 | 3 | 20 | y ┘ |
5 | 1 | 100 |
( w * h ) - ( x * y ) = 밭의 넓이
1m^2 당 자라는 참외의 개수가 k 이므로,
밭에서 자라는 참외의 수는 (밭의 넓이) * k 이다
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 백준 온라인 저지 ( BOJ )' 카테고리의 다른 글
[백준(Baekjoon)][자바(java)] 1002 : 터렛 / 기하 1 (0) | 2022.05.14 |
---|---|
[백준(Baekjoon)][자바(java)] 3053 : 택시 기하학 / 기하 1 (0) | 2022.05.14 |
[백준(Baekjoon)][자바(java)] 3034 : 앵그리 창영 / 기하 1 (0) | 2022.05.13 |
[백준(Baekjoon)][자바(java)] 4153 : 직각삼각형 / 기하 1 (0) | 2022.05.13 |
[백준(Baekjoon)][자바(java)] 3009 : 네 번째 점 / 기하 1 (0) | 2022.05.13 |