https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net 문제 이해주어지는 입력 중에, 각 요소가 어느 위치의 길이인지를 파악하는 것이 관건이다. 주어질 수 있는 경우는 ㄱ,┏, ┗, ┛ 네 개이다. ㄱ 모양의 경우에 한 번 씩 나오는 방향의 길이가 큰 사각형이 너비(North), 높이(West)이고, 두 번씩 나오는 방향(South, East)의 길이들 중에, 껴있는 것이 작은 사각혐의 너비, 높이이다. 다시 말해서 East방향의 길이들 중에서도 South 두 개 사이에 끼어있는 East길이가 너비이고, South 방향의 길이들 중에서도 East 두 개 사이에 끼어있는 South길이가 높이이다. 4 50 2 160 3 30 1 60 3 20 1 100 이러한 규칙은 다른 모양의 밭에도 적용된다. 두 번째 그림의 ┏ 모양 밭에서도 3 50 1 100 4 20 1 60 4 30 2 160 한 번씩 나오는 방향인 South(3)과 West(2)의 길이(즉, 큰 사각형의 높이와 너비이고)두 번씩 나오는 방향들 중에, 끼어있는 애들 (60 과 20)이 작은 사각형의 너비와 높이이다. 이런 특징을 이용하면 어느 모양의 밭이라도, 쉽게 큰 사각형과 작은 사각형의 넓이를 구해, 답을 찾을 수 있다. 단 이때, 방향은 항상 동일하되, 시작점이 다르기 때문에 modulo 연산을 이용해서 껴있는지를 파악해야 한다. 작성 코드
문제 링크2477번: 참외밭 문제 요약
접근 방법가장 긴 가로변과 세로변은 인접해 있다는 것을 문제의 그림을 보면 쉽게 알 수 있습니다. 가장 긴 가로변과 가징 긴 세로변으로부터, 이 둘이 인접하지 않은 방향으로 두 번 건너뛰면 육각형에서 안쪽으로 들어간 가로와 세로 부분을 쉽게 찾을 수 있습니다. 코드 |