생각은 쉬운데 코딩하는게 까다로웠다?
생각도 물론 처음은 쉽지 않았다.
1차원적인 생각으로 큰 사각형에서 작은 사각형을 빼서 답을 구해야겠다고 생각했다.
But, 어떻게 작은 사각형을 구하는지가 난감했다.
조금 생각을 해보니, 둘레를 반시계방향으로 돈다는 조건을 통해서 작은 사각형을 구할 수 있었다.
가장 긴 가로변, 가장 긴 세로변의 인덱스를 구한다.
둘 중에 나중에 나오는 변의 인덱스 + 2, 둘 중에 나중에 나오는 변의 인덱스 + 3 번
째의 변들을 곱해주면 작은 사각형을 구해 줄 수 있었다.
다른 방법들이 많겠지만 나는 이 방법을 택했다.
솔직히 이상적인 생각인지는 모르겠다. 몇 가지 예외를 처리해주어야 했다.
1) 가장 긴 가로변인덱스와 가장 긴 세로변인덱스가 첫번째와 마지막인덱스에 배치되어있는 경우가 예외이다.
를 생각해야 한다. 말로 하기가 힘들지만 그림을 그리기는 너무 귀찮아서,,,
이부분은 나중에 보더라도 이해해야 되는 부분 같다. 아무튼, 단지 인덱스의 크기만을 비교해서는 안된다는 것이다.
인덱스 크기만을 비교해서는 인덱스 크기가 더 큰 변이 우리가 구해줘야 하는 변 같지만 사실은 정반대라는 것이다.
조금 생각을 더 해야 된다는 것이다. 몇 번이고 답이 안 나왔는데 그래서 잘 못 풀었나 생각했는데
적어도 모양에 따라 2~3번 실제로 손으로 써보고 직접 코드를 따라 내려가면서 나의 잘못된 코드를 바로 잡았다.
어쨋든 좋은 문제인거 같다. 까다로운 문제로서는
'알고리즘문제풀이' 카테고리의 다른 글
3/26알고리즈_시그 (0) | 2015.03.24 |
---|---|
더블릿_최소자리바꿈 (0) | 2015.03.24 |
10158_개미 (0) | 2015.03.06 |
1149_RGB거리 (0) | 2015.03.01 |
9655 돌게임 (0) | 2015.03.01 |