아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

편자

시간 제한1초메모리 제한128 MB

요약
크기가 최대 5인 N x N 격자에 괄호가 놓여 있다. 왼쪽 위 칸에서 시작해 각 칸을 한 번씩만 지나는 경로 중, 수집한 문자가 '(' 연속 뒤에 같은 개수의 ')' 연속이 오는 가장 긴 문자열의 길이를 구한다.
난이도

보통10점 중 6점

유형
DFS, 백트래킹, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

소 베시는 균형 잡힌 괄호 문자열을 모두 좋아하지만, 그중에서도 완전 균형 문자열을 특히 좋아합니다. 완전 균형 문자열이란 여는 괄호 ( 가 연속으로 나온 뒤, 같은 개수의 닫는 괄호 ) 가 연속으로 나오는 문자열입니다. 예를 들면 다음과 같습니다.

(((())))

어느 날 베시는 외양간을 거닐다가 N×NN \times N 크기의 편자 격자를 발견했습니다. 각 편자는 ( 또는 ) 모양 중 하나로 놓여 있습니다. 베시는 왼쪽 위 칸에서 출발해 편자를 주우며 돌아다니면서, 주운 편자들이 이루는 문자열이 완전 균형이 되도록 하려고 합니다. 베시가 얻을 수 있는 가장 긴 완전 균형 문자열의 길이를 구하세요.

한 번에 베시는 상하좌우로 한 칸 이동할 수 있습니다. 편자가 아직 남아 있는 칸으로만 이동할 수 있으며, 그 칸으로 이동하면 편자를 줍기 때문에 그 칸은 비게 되어 다시는 돌아갈 수 없습니다. 베시는 항상 왼쪽 위 칸의 편자를 먼저 줍습니다. 베시는 완전 균형 문자열을 이루는 편자들만 가지므로, 격자의 모든 편자를 다 줍지 못할 수도 있습니다.

입력

  • 첫째 줄: 정수 NN (2≤N≤52 \le N \le 5).
  • 둘째 줄부터 N+1N+1째 줄까지: 각 줄에는 길이 NN 인 괄호 문자열이 주어집니다. 이 NN 개의 줄이 함께 N×NN \times N 격자를 나타냅니다.

출력

  • 첫째 줄: 베시가 모을 수 있는 가장 긴 완전 균형 편자 문자열의 길이. 어떤 균형 문자열도 모을 수 없다면 (예를 들어 왼쪽 위 칸이 ) 인 경우) 0 을 출력합니다.

힌트

아래 그림은 길이 8 의 완전 균형 문자열을 얻는 한 격자와 그 수집 순서를 함께 보여 줍니다. 각 숫자는 그 칸의 편자를 줍는 단계를 나타내며, 괄호가 그대로 남아 있는 칸은 방문하지 않은 칸입니다.

1())
2)((
345(
876)

주운 편자를 단계 순서대로 읽으면 (((()))) 가 되며, 이는 완전 균형 문자열이고 길이는 8 입니다.

예제1

  1. 예제 1

    입력
    4
    (())
    ()((
    (()(
    ))))
    
    예상 출력
    8