https://programmers.co.kr/learn/courses/30/lessons/60058?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다.

2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다.
단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다.


3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 
     3-1. 수행한 결과 문자열을 u에 이어 붙인 후 반환합니다. 

4. 문자열 u가 "올바른 괄호 문자열"이 아니라면 아래 과정을 수행합니다. 
     4-1. 빈 문자열에 첫 번째 문자로 '('를 붙입니다. 
     4-2. 문자열 v에 대해 1단계부터 재귀적으로 수행한 결과 문자열을 이어 붙입니다.
     4-3. ')'를 다시 붙입니다. 
     4-4. u의 첫 번째와 마지막 문자를 제거하고, 나머지 문자열의 괄호 방향을 뒤집어서 뒤에 붙입니다. 
     4-5. 생성된 문자열을 반환합니다.


Solution

 

문제 유형 : 문자열, 구현

 

난 솔직히 이런 문제들은 처음 보면 거부감부터 든다.

설명글이 너무 길고 복잡해 보여서 읽기가 싫다,,ㅎ

이 문제 역시 글을 읽고 완벽하게 이해하기까지 꽤 걸린 것 같다. (특히 2번, 4-4번)

문제도 이해 못하는 난독은 아니지만 그거와는 별개로 독서는 꾸준히 하도록 해야겠다^_^

 

위의 코드에 주석으로 표현했듯이 이 로직 그대로 구현을 하면 되는 간단한 문제라고 생각했고

신나서 구현하고, 기본으로 주어지는 테스트 케이스 3 까지 다 통과해서

또 신나서 제출 했는데 다른 테스트 케이스에서 거의 전멸당했다ㅎ

 

혼자 코드 리뷰하면서 왜 틀렸나 보는데 왜 틀렸는지 의구심만 계속 생길 뿐, 해결되지 않았다.

그래서 완전 침착하게 1번부터 4번까지 차례대로 해보기로 하고 몰입한 결과.

2번을 구현한 코드가 문제였다.

철썩같이 믿고있던 놈이라 밀려오는 배신감은 물론, 허비한 시간에 대한 원망까지 들었다. 후.

다음부턴 봐주는거 없이 냉정하게 리뷰해야겠다고 생각했다.

 

통과 ^_^


생강강

,