첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지나는 변의 방향과 길이 (1 이상 500 이하의 정수) 가 둘째 줄부터 일곱 번째 줄까지 한 줄에 하나씩 순서대로 주어진다. 변의 방향에서 동쪽은 1, 서쪽은 2, 남쪽은 3, 북쪽은 4로 나타낸다.
첫째 줄에 입력으로 주어진 밭에서 자라는 참외의 수를 출력한다.
서쪽이나 동쪽방향의 선분을 가로, 북쪽이나 남쪽방향의 선분을 세로로 생각
1. 가장 긴 가로와 세로의 위치를 각각 구한다.
1. 가장 긴 가로 옆에 위치한 두 세로의 길이 차이가 빈 사각형의 세로가 된다.
1. 2번과 같은 원리로 가장 긴 세로 양 옆에 위치한 두 가로의 차이가 빈 사각형의 가로가 된다.
1. 2~3의 과정으로 구한 결과로 빈 사각형의 넓이를 구하고 큰 사각형의 넓이에서 빼주고 * N
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[]arr = new int[6];
int MaxWidthI=0,MaxWidth=0,MaxHeight=0,MaxHeightI=0,d;
for(int i=0;i<6;i++) {
st = new StringTokenizer(br.readLine());
d = Integer.parseInt(st.nextToken());
arr[i]=Integer.parseInt(st.nextToken());
//가장 긴 가로의 길이와 위치 찾기
if((d==1 || d==2)&& MaxWidth<arr[i]) {
MaxWidth=arr[i];
MaxWidthI=i;
}
//가장 긴 세로의 길이와 위치 찾기
else if((d==3 || d==4)&& MaxHeight<arr[i]){
MaxHeight=arr[i];
MaxHeightI=i;
}
}
int right,left,minWidth,minHeight;
if(MaxWidthI+1==6)right=0;
else right=MaxWidthI+1;
if(MaxWidthI-1==-1)left=5;
else left=MaxWidthI-1;
//빈 사각형의 세로 길이
minHeight=Math.abs(arr[right]-arr[left]);
if(MaxHeightI+1==6)right=0;
else right=MaxHeightI+1;
if(MaxHeightI-1==-1)left=5;
else left=MaxHeightI-1;
//빈 사각형의 가로 길이
minWidth=Math.abs(arr[right]-arr[left]);
System.out.println(((MaxWidth*MaxHeight)-(minHeight*minWidth)) * N);
}
}
잘 보고 갑니다!