문제
2477번: 참외밭
첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지
www.acmicpc.net
입력
- 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지나는 변의 방향과 길이 (1 이상 500 이하의 정수) 가 둘째 줄부터 일곱 번째 줄까지 한 줄에 하나씩 순서대로 주어진다. 변의 방향에서 동쪽은 1, 서쪽은 2, 남쪽은 3, 북쪽은 4로 나타낸다.
출력
- 첫째 줄에 입력으로 주어진 밭에서 자라는 참외의 수를 출력한다.
입력 예제
7
4 50
2 160
3 30
1 60
3 20
1 100
출력 예제
47600
문제 풀이

- (큰 사각형의 넓이 - 작은 사각형의 넓이) * 면적 당 열리는 참외의 수를 구해야 한다.
- 큰 사각형의 넓이 구하기
- 방향 값이 1과 2일 때(동쪽, 서쪽 방향) 가로 길이이므로 가로길이 중 가장 긴 길이가 큰 사각형의 가로 길이이다.
- 위와 같이 방향 값이 3과 4일 때의 값 중 가장 긴 길이가 큰 사각형의 세로 길이이다.
- 위에서 구한 긴 가로 길이 * 긴 세로 길이의 값이 큰 사각형의 넓이이다.
- 작은 사각형의 넓이 구하기
- 큰 사각형의 가로 양 옆에 세로 변이 붙어있는데 이 두 길이 차가 작은 사각형의 세로 길이이다.
- a옆 노란색 세로 줄
- 마찬가지로 큰 사각형의 세로 양 옆에 붙어있는 가로 변들의 길이 차가 작은 사각형의 가로 길이이다.
- b옆 초록색 가로 줄
- 큰 사각형의 가로 인덱스와 세로 인덱스를 저장해놨으므로 각 변들의 정보가 저장된 배열에서 인접한 두 가로 길이의 값과 세로 길이의 값을 구할 수 있다.
- 큰 사각형의 가로나 세로 값의 인덱스가 0인 경우 인접한 변의 정보는 -1번 인덱스와, 1번 인덱스가 아닌 마지막 인덱스와 첫 번째 인덱스에 저장되어있고, 5인경우도 마찬가지로 0번 인덱스와 4번 인덱스에 저장되어있으므로 %6을 하여 순환시켜 줘야함 인덱스 에러에 주의
- 큰 사각형의 넓이와 작은 사각형의 넓이를 모두 구했다면, 큰 사각형의 넓이에서 작은 사각형의 넓이를 뺀 후 1㎡당 열리는 참외의 값을 곱하여 출력한다.
- 큰 사각형의 가로 양 옆에 세로 변이 붙어있는데 이 두 길이 차가 작은 사각형의 세로 길이이다.
코드
# 동서남북(1,2,3,4)
k = int(input())
graph = []
for _ in range(6):
d,l = map(int,input().split())
graph.append((d,l))
# 가장 긴 가로와 세로 길이 구하기
w,w_idx = 0,0
h,h_idx = 0,0
for i in range(len(graph)):
# 동,서쪽 방향인 경우 가로 길이
if graph[i][0] == 1 or graph[i][0] == 2:
if graph[i][1] > w:
w = graph[i][1]
w_idx = i
# 남, 북쪽 방향인 경우 세로 길이
if graph[i][0] == 3 or graph[i][0] == 4:
if graph[i][1] > h:
h = graph[i][1]
h_idx = i
# 작은 사각형의 가로, 세로 길이 구하기
small_w = abs(graph[(w_idx - 1) % 6][1] - graph[(w_idx + 1) % 6][1])
small_h = abs(graph[(h_idx - 1) % 6][1] - graph[(h_idx + 1) % 6] [1])
size = ((w * h) - (small_w * small_h)) * k
print(size)'Algorithm > Simulation' 카테고리의 다른 글
| [Python] SWEA 10570번 제곱 팰린드롬 수 (0) | 2023.05.08 |
|---|---|
| [Python] 백준 2304번 창고 다각형 (0) | 2023.05.04 |
| [Python] 백준 14503번 로봇 청소기 (1) | 2023.03.29 |
| [Python] 프로그래머스 "문자열 압축" (0) | 2023.03.27 |
| [Python] 백준 18406번 럭키 스트레이트 (0) | 2023.01.30 |