프로젝트 관리자입니다. 어느 날, 프로그래머 중 하나는 미친 갔다 ( 하지 당신의 잘못 )과 무능력 (대한 불평, 그 자리에서 종료하기 전에, 그들에게 무작위 브래킷을 코드베이스에 모두에게 표현했다 및 추가 도없는 당신의 잘못 ). 그러나 이것은 어떤 이유로 수정 제어를 사용하지 않는 이유입니다 ( 전적으로 귀하의 결함이 아닙니다 ). 그리고 어떤 이유로 든 다른 프로그래머 중 어느 것도 일치하지 않는 대괄호를 고치기 위해 모든 표현을 거치기를 원하지 않습니다 . 요즘 프로그래머 여러분은 스스로 생각합니다. 직접해야합니다. 공포! 그런 일은 당신의 아래에 있어야 했어요 ...
입력은 단일 행이되며 여기에는 많은 왼쪽 대괄호 ( ( [ {
)와 오른쪽 대괄호 ( ) ] }
)가 포함됩니다. 또한 주석 ( /* */
) 및 문자열 리터럴 ( " "
또는 ' '
)과 다양한 숫자, 문자 또는 기호를 포함 할 수도 있지만 항상 그런 것은 아닙니다 .
대응하는 반대 (주석 또는 문자열 리터럴 제외)가없는 하나 이상의 대괄호 (주석 또는 문자열 리터럴 제외)가 있습니다. 예를 들어, 사전이 }
없는 오류 {
. 또 다른 예 : 나중에 (
는없는 a )
. 프로그램은 대괄호를 일치시키는 데 필요한 최소 대괄호 수를 공백으로 대체합니다.
예 :
(4 + (2 + 3))]
==> (4 + (2 + 3))
(끝에서 대괄호)
][][[]]
==> [][[]]
(시작에서 대괄호)
("Hel(o!"))
==> ("Hel(o!")
(끝 괄호)
( /* )]*/
==> /* )]*/
(시작에서 괄호)
{()]
==> ()
(곱슬 브래킷 대괄호)
- 가장 편리한 방법 (STDIN, 명령 행 인수, 파일 읽기 등)에서 입력을 가져올 수 있습니다.
- 동일한 제거 횟수로 불일치를 해결하는 방법이 두 가지 이상인 경우 둘 중 하나를 사용할 수 있습니다.
- 대괄호에는 불일치 만 있습니다. 문자열 리터럴과 주석은 항상 올바르게 구성됩니다.
- 제목은 이 SO 스레드 에서 나옵니다.
- 주석에는 인용 부호, 인용 부호에는 인용 부호, 주석에는 주석 또는 인용 부호에는 포함되지 않습니다.
이것은 코드 골프이므로 최소 바이트 수가 이깁니다. 사양이 명확하지 않은 경우 의견에 질문하십시오.
("foo (\") bar")
합니까 (예 :) ?
{{(})
같아야 한다고 주장합니다 . 그러나 나는 이미 답을 썼기 때문에 편견이 있습니다. { }
{(})