풀이)
가장 긴 가로변 옆에 달린 두 세로변의 차와,
가장 긴 세로변 옆에 달린 두 가로변의 차이를 곱하면 빼야 하는 사각형의 면적을 알 수 있다.
즉, 총 면적 = (가장 긴 가로변 가장 긴 세로변) - (가장 긴 가로변 옆에 달린 두 세로변의 차 가장 긴 세로변 옆에 달린 두 가로변의 차)
이 때 방향이 1, 2일 경우 가로, 3, 4일 경우 세로이다.
내 코드)
import java.io.*;
import java.util.*;
public class Backjoon2477 {
public static void main(String[]args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int K = Integer.parseInt(bf.readLine());
//12는 가로다. 12 중 가장 긴 거 찾고, 그 옆에 붙은 세로들을 구한다.
//34는 세로다. 34 중 가장 긴 거 찾고, 그 옆에 붙은 가로들을 구한다.
int [][]input = new int[6][2];
for(int i=0;i<6;i++) {
StringTokenizer st = new StringTokenizer(bf.readLine());
String dir = st.nextToken();
String len = st.nextToken();
input[i][0] = Integer.parseInt(dir);
input[i][1] = Integer.parseInt(len);
}
int maxgaro=0;
int maxsero=0;
if((input[0][0]==1)||(input[0][0]==2))
maxgaro = 0;
else
maxgaro = 1;
if((input[0][0]==3)||(input[0][0]==4))
maxsero = 0;
else
maxsero = 1;
for(int i=0;i<6;i++) {
if((input[i][0] == 1) || (input[i][0] == 2)) {
if(input[maxgaro][1] < input[i][1])
maxgaro = i;
}if((input[i][0] == 3) || (input[i][0] == 4)) {
if(input[maxsero][1] < input[i][1])
maxsero = i;
}
}
int smallgaro1 = maxgaro-1>=0?maxgaro-1:5;
int smallgaro2 = maxgaro+1>5?0:maxgaro+1;
int smallsero1 = maxsero-1>=0?maxsero-1:5;
int smallsero2 = maxsero+1>5?0:maxsero+1;
int a = Math.abs(input[smallsero2][1]-input[smallsero1][1]);
int b = Math.abs(input[smallgaro2][1]-input[smallgaro1][1]);
int result = ((input[maxgaro][1]*input[maxsero][1]) - (a*b))*K;
System.out.println(result);
}
}