고대의 강력한 메인프레임, Bracketeer™를 위한 소프트웨어를 작성할 기회를 얻었어요. 그 위에서 돌아가는 소프트웨어는 독자적인 언어로 작성돼요. 문법은 대부분 익숙한데, 대괄호와 중괄호, 소괄호가 정말 많이 눈에 띄어요. Bracketeer™는 강력하지만 유연하지는 않아요. 소스 코드에 짝이 맞지 않는 대괄호나 중괄호, 소괄호가 하나라도 있으면 Bracketeer™는 멈춰 버리고 다시 부팅해야 해요. 그런 일을 피하려고, Bracketeer™에서 실행하기 전에 대괄호와 중괄호, 소괄호의 짝이 맞는지 확인할 수 있는 코드를 작성하기 시작해요.
[] 대괄호, {} 중괄호, () 소괄호 또는 이들의 조합이 들어 있는 문자열이 주어지면, 모든 쌍이 올바르게 짝을 이루고 중첩되어 있는지 확인해요.
그 밖의 다른 문자는 무시해요.
예를 들어, "{what is (42)}?"는 짝이 맞고 "[text}"는 맞지 않아요.
이 연습 문제를 푸는 방법은 여러 가지가 있지만, 직접 어빌리티 핸들러를 작성하는 연습을 하고 싶은 분들을 위해 추가 스텁도 몇 개 준비해 두었어요.
이 연습 문제에서 제공하는 checkBalance 도우미 함수의 시그니처는 {Stack}이라는 어빌리티 요구 사항을 사용해요.
Stack 어빌리티는 정의되어 있지만, 핸들러인 Stack.run은 정의되어 있지 않아요!
원한다면 Stack.run, checkBalance, isPaired 함수를 직접 구현할 수 있어요.
어빌리티로 이 연습 문제를 구현하지 않아도 테스트는 실행돼요.