문제에 나올 수 있는 도형의 모양은, 무조건 변이 6개이므로 큰 사각형에서 작은 사각형을 뺀 모양이다.
K = int(input())
input_list = []
for _ in range(6):
input_list.append(list(map(int, input().split())))
큰 사각형의 넓이는
방향이 동쪽, 서쪽(1, 2)인 것중에 큰 값과 -> 가로
남쪽, 북쪽(3, 4)인 것중에 큰 값 -> 세로를 곱하면 된다.
max_width = 0
max_height = 0
for i in range(6):
if (input_list[i][0] == 1 or input_list[i][0] == 2):
if (input_list[i][1] > max_width):
max_width = input_list[i][1]
elif (input_list[i][0] == 3 or input_list[i][0] == 4):
if (input_list[i][1] > max_height):
max_height = input_list[i][1]
작은 사각형의 넓이는
만약 6번의 방향 배열이 (4, 2, 3, 1, 3, 1)이라면
이 중에 (3, 1)이 두 번 반복되었고, 이러한 패턴은 어떤 문제든 유일하게, 무조건 나타난다는 것을 알 수 있다.
그러면 이 (3, 1, 3, 1)에서 가운데 부분인 (1, 3)이 각각 작은 사각형의 가로, 세로가 된다.
심지어 배열이 (3, 1, 4, 2, 3, 1)인 상황에도 리스트의 음수 인덱싱을 통하여 이런 규칙을 찾을 수 있게 하였다.
direct_list = [input_list[i][0] for i in range(6)]
(sub_x, sub_y) = (0, 0)
for i in range(6):
if (direct_list[-3 + i] == direct_list[-1 + i]):
if (direct_list[-2 + i] == direct_list[i]):
(sub_x, sub_y) = (input_list[-2 + i][1], input_list[-1 + i][1])
result = (max_width * max_height - sub_x * sub_y) * K
print(result)
https://www.acmicpc.net/problem/2477
'알고리즘과 코딩 테스트 > 백준 25단계' 카테고리의 다른 글
[파이썬] 2004번. 조합 0의 개수 풀이 (0) | 2023.02.24 |
---|---|
[파이썬] 9375번. 패션왕 신해빈 풀이 (0) | 2023.02.22 |
[파이썬] 2981번. 검문 풀이 (1) | 2023.02.21 |
[파이썬] 1002번. 터렛 풀이 (0) | 2023.02.20 |
[파이썬] 3009번. 네 번째 점 풀이 (0) | 2023.02.12 |