문제에서 요구하는 답은 아주 간단합니다.
근데 인풋이 좀 희한하게 들어와서 쪼끔 생각해주어야 합니다.
import java.io.*;
import java.util.*;
public class Main {
static class Info{
int dir, length;
Info(int dir, int length){
this.dir = dir; this.length = length;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
List<Info> list = new ArrayList<>();
int K = Integer.parseInt(br.readLine());
int N = 0, M = 0; // 세로, 가로
for(int i = 0; i < 6; i++) {
st = new StringTokenizer(br.readLine(), " ");
list.add(new Info(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())));
if(list.get(i).dir == 1 || list.get(i).dir == 2)
N = Math.max(list.get(i).length, N);
if(list.get(i).dir == 3 || list.get(i).dir == 4)
M = Math.max(list.get(i).length, M);
}
list.add(list.get(0));
int answer = M * N;
for(int i = 0; i < list.size() - 1; i++) {
Info f = list.get(i);
Info s = list.get(i+1);
if((f.dir == 1 && s.dir == 3) || (f.dir == 2 && s.dir == 4) || (f.dir == 3 && s.dir == 2) || (f.dir == 4 && s.dir == 1)) {
answer -= f.length * s.length;
break;
}
}
System.out.println(answer * K);
}
}
참외밭의 모양은 4가지가 있씁니다.
우선 입력받을 때 전체 사각형의 가로, 세로 크기를 구해줍시다.
안쪽으로 파여있는 사각형의 크기를 구하는게 관건인데용.
그것은 인풋의 방향을 잘 보면 쉽게 구할 수 있습니다.
먼저 테케 모양일 때는 3131 이 부분이 안쪽으로 들어가는 부분입니다.
┛ 모양은 2323,
┗ 모양은 4242,
┏ 모양은 1414 이런 식으로 나타납니당.
우린 안쪽 사각형의 크기를 구하면 되니깐 위에서부터 방향이 13, 32, 24, 41 인 경우의 길이를 갖고 계산해주면 끝입니다.
감사합니다 ^_^
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ-2252][위상 정렬] 줄 세우기 - Java (0) | 2020.09.24 |
---|---|
[BOJ-16500][DP] 문자열 판별 - Java (0) | 2020.09.24 |
[BOJ-11000][우선순위 큐] 강의실 배정 - Java (0) | 2020.09.23 |
[BOJ-15684][시뮬레이션/완전 탐색] 사다리 조작 - Java (0) | 2020.09.22 |
[BOJ-1747][에라토스테네스의 체/문자열 처리] 소수&팰린드롬 - Java (0) | 2020.09.21 |