728x90
반응형
https://www.acmicpc.net/problem/2477
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import static java.lang.Math.*;
public class Main {
public static int n;
public static int arr[]=new int[6];
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new BufferedReader(new InputStreamReader(System.in)));
n=Integer.parseInt(br.readLine());
int x=0;
int maxXIdx=0;
int y=0;
int maxYIdx=0;
int delX=0;
int delY=0;
for(int i=0;i<6;i++){
StringTokenizer st=new StringTokenizer(br.readLine());
int n=Integer.parseInt(st.nextToken());
int length=Integer.parseInt(st.nextToken());
arr[i]=length;
// 가장 긴 가로변을 찾아서 그거의 앞 뒤에 나온 세로 두개의 차이
// 가장 긴 세로변을 찾아서 그거의 앞 뒤에 나온 가로 두개의 차이
if(n==1||n==2){
if(length>x){
x=length;
maxXIdx=i;
}
}
else if(n==3||n==4){
if(length>y){
y=length;
maxYIdx=i;
}
}
}
if(maxXIdx==5){
delX=Math.abs(arr[0]-arr[4]);
}else if(maxXIdx==0){
delX=Math.abs(arr[5]-arr[1]);
}else{
delX=Math.abs(arr[maxXIdx-1]-arr[maxXIdx+1]);
}
if(maxYIdx==5){
delY=Math.abs(arr[0]-arr[4]);
}else if(maxYIdx==0){
delY=Math.abs(arr[5]-arr[1]);
}else{
delY=Math.abs(arr[maxYIdx-1]-arr[maxYIdx+1]);
}
int ans=x*y-(delX*delY);
System.out.println(ans*n);
}
}
|
cs |
가장 긴 가로변 앞 뒤에 나오는 세로변의 차이 = 삭제해야 할 사각형의 세로
가장 긴 세로변 앞 뒤에 나오는 가로변의 차이 = 삭제해야 할 사각형의 가로
답 = (가장 긴 가로변 * 가장 긴 세로변) -(삭제해야할 사각형의 세로 * 삭제해야할 사각형의 가로)
728x90
반응형
'알고리즘 > 기초수학' 카테고리의 다른 글
[java 백준]골드 5/1011번 Fly me to the Alpha Centauri (0) | 2022.05.19 |
---|---|
[java 백준] 실버 1/ 6588번 골드바흐의 추측 (0) | 2021.09.19 |
[java 백준] 실버 2/2004번 조합 0의 개수 (0) | 2021.09.18 |
[java 백준] 실버 4/11653번 소인수분해 (0) | 2021.09.16 |
[java 백준] 실버 2/1929번 소수 구하기 (0) | 2021.09.16 |
댓글