본문 바로가기
Python/백준 문제

백준 알고리즘 문제_9012번

by hooni40 2021. 5. 4.
728x90
반응형

+) 문제 풀기 위한 게시글이므로 파이썬 문법 설명은 생략하였습니다.

추가로 실제로 문제를 풀면서 글을 쓰는 것이라 서체에 불편함을 느끼시더라고 너그러이 용서 부탁드립니다^_^

더 좋고 빠른 방법이 있다면 댓글로 알려주시면 감사드리겠습니다!

 

이번시간에는 9012번 문제를 풀어보겠습니다. (문제 링크 : 9012번 )

 

문제 :

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다.

여러분은 입력으로 주어진 괄호 문자열이 VPS 인지 아닌지를 판단해서 그 결과를 YES 와 NO 로 나타내어야 한다. 

 

생각해보기 :

-. 처음 수는 몇번이 진행될 지? → input() 함수 사용

-. '('와 ')'의 수를 셀려 같으면 YES / 다르면 NO를 출력시키자 → 조건문 활용

 

<내가 짠 코드> ---- 채점시 오답 ㅠㅠ

개선 필요 사항 및 배운 점!

솔직히 내 코드가 왜 틀린지 몰랐으나 구글링 해보니 수가 같더라도 ')'가 나오고 '('가 나오면 닫힌게 아니므로 NO가 출력된다고 한다 (ex. '((()))'은 YES지만 ')((())'은 NO가 나와야된다)

즉, ')'가 먼저 나오는 경우는 조건을 추가하여 반복문을 종료 시켜야한다!

 

<내가 짠 코드 Ver2> ---- 정답!!

이번엔 정답!!

처음 틀린 코드와 개념은 동일하게 숫자를 세아리지만 '('와 ')' 따로 세는것이 아닌 count를 지정하여 ±1을 해준다!

위의 코드처럼 ')' 가 먼저나왔을경우 -1이 되고 count가 음수일 경우 조건문을 빠져나와 5아래 elif문에 의해 'NO'를 출력!

 

♠이 문제를 풀면서 느낀 점 및 개선사항

-. 구글링하면서 다른 사람들의 풀이를 보니 stack구조(파이썬의 list)를 사용하여 푸는 사람들이 많았다. 자료구조를 이해하기 위해서라도 리스트 공부를 더 빡세게 해야겠다!

728x90
반응형

'Python > 백준 문제' 카테고리의 다른 글

백준 알고리즘 문제_1406번  (0) 2021.05.13
백준 알고리즘 문제_1874번  (0) 2021.05.05
백준 알고리즘 문제_9093번  (0) 2021.05.03
백준 알고리즘 문제_10828번  (0) 2021.05.02

댓글