생각보다 푸는데 시간이 걸린 문제...실수를 많이 했다.
따라서 왼쪽 위 꼭짓점에서 시작하도록 입력받은 변의 방향 순서를 돌리는 것이 중요하다.
왼쪽 위 꼭짓점으로 기준을 정한 이유는 그림을 보면 알 수 있다.
참고로 1번 도형만 3->1로 시작하는 경우가 두 가지가 있다. 이를 고려해서 조건문을 작성해야한다.
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));
int N = Integer.parseInt(br.readLine());//참외 수 입력
int side[][] = new int[6][2];//변의 방향과 길이 입력
for(int i=0; i<6; i++) {
StringTokenizer st = new StringTokenizer(br.readLine()," ");
side[i][0]=Integer.parseInt(st.nextToken());
side[i][1]=Integer.parseInt(st.nextToken());
}
while(true) { //왼쪽 위 꼭짓점에서 시작하도록 반시계방향으로 한칸씩 순서를 당긴다.
if(side[0][0]==3&&side[1][0]==1)
break;
else {
int tmp[]=side[5];
side[5]=side[4];
side[4]=side[3];
side[3]=side[2];
side[2]=side[1];
side[1]=side[0];
side[0]=tmp;
}
}
int area=0; //넓이
//변의 방향 순서를 String으로 받는다.
String sequence = side[0][0]+""+side[1][0]+""+side[2][0]+""+side[3][0]+""+side[4][0]+""+side[5][0];
if(sequence.compareTo("313142")==0)//1번 도형일 경우
area = side[4][1]*side[5][1] - side[1][1]*side[2][1];
else if(sequence.compareTo("314231")==0)//1번 도형일 경우
area = side[2][1]*side[3][1] - side[0][1]*side[5][1];
else if(sequence.compareTo("314142")==0)//2번 도형일 경우
area = side[0][1]*side[5][1] - side[2][1]*side[3][1];
else if(sequence.compareTo("314242")==0)//3번 도형일 경우
area = side[0][1]*side[1][1] - side[3][1]*side[4][1];
else//4번 도형일 경우
area = side[1][1]*side[2][1] - side[4][1]*side[5][1];
System.out.print(area*N);//넓이 * 참외 수
br.close();
}
}