개발자 크루
취미로 코딩하는 RecurDyn 개발자 모임
Lv.3
나무 조경
- 난이도
- 3 단계
- 참가자
- 0 명
- 제출
- 0 명
- 정답률
- 0.00 %
언어별 시간/메모리
언어 | 시간 | 메모리 |
---|---|---|
C++ | 1초 | 1024MB |
JavaScript | 3초 | 1024MB |
C | 1초 | 1024MB |
Java | 1초 | 1024MB |
Python | 3초 | 1024MB |
남우는 우후죽순으로 자라 있는 나무들을 잘 정리하여 정원을 가꾸려고 합니다. 정원은 n × n 격자 모양으로 이루어져 있으며, 각 칸에는 하나의 나무가 심어져 있습니다. 상하좌우로 맞닿아 있는 경우를 인접한 경우라고 했을 때, 남우는 최대 4번 인접해 있는 두 나무를 묶는 것을 진행하려고 합니다. 이때 묶은 나무끼리는 서로 겹쳐서는 안 되며, 두 나무가 묶였을 때 얻을 수 있는 아름다움은 두 나무의 키의 합과 동일하다고 합니다. 이러한 상황에서 묶인 쌍의 아름다움의 합을 최대로 만들어보려고 합니다.
예를 들어 n = 4 일 때 다음과 같이 정원 정보가 주어진 경우를 생각해보겠습니다. 각 격자 칸에 적혀있는 숫자는 각 칸에 있는 나무들의 키를 의미합니다.
이때 다음과 같이 나무들을 묶게 되면 서로 묶은 쌍끼리 겹치지 않되 얻을 수 있는 아름다움의 합이 25(=7+6+7+5)로 최대가 됩니다.
초기 격자의 상태가 주어졌을 때 최대 4개의 쌍을 겹치지 않게 잘 골라 얻을 수 있는 아름다움의 총 합을 최대로 하는 프로그램을 작성해보세요.
본 문제의 저작권은 (주)브랜치앤바운드에 있으며, 저작자의 동의 없이 무단 전재/복제/배포를 금지합니다.
제약조건
- 2 ≤ n ≤ 4
- 1 ≤ 나무의 키 ≤ 10
입력형식
첫 번째 줄에는 격자의 크기를 나타내는 n이 주어집니다.
두 번째 줄부터는 n개의 줄에 걸쳐 각 행에 해당하는 나무의 키 정보 n개가 공백을 사이에 두고 주어집니다.
출력형식
첫 번째 줄에 최대 4개의 쌍을 서로 겹치지 않게 묶어 얻을 수 있는 최대 아름다움의 합을 출력합니다. 꼭 4쌍을 전부 골라도 되지 않음에 유의합니다.
입력예제1
4 2 1 3 3 5 1 2 1 2 1 2 3 5 1 1 1
출력예제1
25
입력예제2
2 1 2 3 4
출력예제2
10
입력예제3
3 7 4 5 7 3 5 4 6 6
출력예제3
44