만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

프로그램

면접 대비

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

요약
괄호 문자열이 올바른지 확인하고 올바르면 최대 중첩 깊이를 출력하고 아니면 NIE를 출력합니다.
난이도

쉬움10점 중 3점

유형
스택
정답자
아직 제출이 없습니다

문제

바이트랜드(Bajtocja)의 방첩 기관은 어떤 적대국이 메시지를 암호화하는 데 쓰는 프로그램을 오랫동안 가로채려 했습니다. 마침내 그 프로그램의 일부, 즉 프로그램에 등장하는 모든 괄호의 나열을 손에 넣었습니다.

프로그램에는 세 종류의 괄호가 나옵니다.

  • 소괄호: ( 와 )
  • 대괄호: [ 와 ]
  • 중괄호: { 와 }

정보량은 적지만, 요원들은 여기서 가능한 한 많은 것을 알아내려 합니다. 이 나열에서 가장 중요한 특성은 괄호 중첩 깊이입니다. 괄호 나열의 중첩 깊이란 각 괄호 쌍이 바로 앞 쌍의 안쪽에 들어 있는 괄호 쌍들의 가장 긴 연쇄의 길이, 다시 말해 서로 중첩된 괄호 쌍의 최대 개수를 뜻합니다.

이 비용이 큰 계산은 가로챈 괄호 문자열이 올바를 때에만 의미가 있습니다. 올바르다는 것은, 각 종류의 여는 괄호를 그보다 뒤에 나오는 같은 종류의 닫는 괄호와 짝지을 수 있고, 그 사이에 있는 괄호들 또한 올바른 괄호 문자열을 이루는 경우를 말합니다.

입력

첫째 줄에 정수 nn (1≤n≤1 000 0001 \le n \le 1\,000\,000) 하나가 주어집니다. 이는 프로그램의 길이입니다.

둘째 줄에 (, ), [, ], {, } 문자로 이루어진 문자열이 주어집니다. 이는 프로그램에 차례로 등장하는 괄호들입니다.

출력

입력으로 주어진 괄호 문자열이 올바르면, 괄호의 최대 중첩 깊이를 나타내는 정수 하나를 출력합니다.

올바르지 않으면 NIE 라는 단어 하나만 출력합니다.

예제2

  1. 예제 1

    입력
    20
    {}([{()()[]}]()[{}])
    
    예상 출력
    4
    
  2. 예제 2

    입력
    3
    {}}
    
    예상 출력
    NIE