코딩문제풀이/파이썬

[프로그래머스] 올바른 괄호 (파이썬)

오늘밤공부 2023. 3. 1. 13:34
반응형

🗓️ 문제 설명

  • 올바른 괄호는 '('로 열려서 ')'로 닫혔다는 것을 의미합니다.
  • '(' 또는 ')'로만 이루어진 문자열 s가 주어질 때, 괄호가 올바른 괄호인지 확인하여 True/False를 반환하세요.
  • 제한 사항
    • 문자열 s의 길이 : 100000이하의 자연수
    • 문자열 s는 '(' 또는 ')'로만 이루어져 있습니다.
  • 입출력 예시
s answer
"()()" true
"(())()" true
")()(" false
'(()(" false

 

💻 코드

최종 코드

  • 주어진 s의 길이만큼 반복문을 실행할 경우, 효율성 테스트에서 런타임 에러 발생
  • 수정사항 :
    >> 반복문으로 모든 문자열을 찾아보는 것이 아닌 마지막 인덱스에서만 '('와 ')'를 비교하는 조건문 추가

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 2번줄 : s에서 추출한 괄호를 추가할 빈 리스트(tmp) 생성
  2. 3번줄 : 문자열 s에서 글자(i)를 하나씩 꺼내는 반복문 생성
  3. 4번줄 : 2번줄의 리스트(tmp)가 비었다면 반복문에서 추출한 글자(i)를 추가
  4. 7번줄 : 2번줄의 마지막 요소(tmp[-1])와 반복문에서 추출한 글자(i)를 더한 값이 '()'이면 리스트(tmp)에서 제거
  5. 10번줄 : 7번줄의 조건을 만족하지 않으면 반복문에서 추출한 글자(i)를 리스트(tmp)에 추가
  6. 13번줄 : 올바른 괄호라면 리스트가 비어 길이가 0이고, 올바른 괄호가 아니라면 리스트가 0보다 길기 때문에 len(tmp)==0 을 확인

 

⚙️ 시행착오

1차 시도

더보기
  • 2개의 테스트에서 실패
  • '(()))(()', '())(()'와 같이 '('와 ')'의 개수는 같지만, 올바른 괄호가 아닌 경우가 존재

 

2차 시도

더보기
  • 수정사항 :
    >> 반복문을 시행하면서 올바른 괄호가 아닐 경우, 특정 시점에서 '('보다 ')'가 많아지기 때문에 해당 사례를 판별하는 조건문 추가 
  • 테스트에서 모두 통과, 효율성 테스트에서 1개 실패
  • 주어진 s의 길이만큼 반복문을 실행할 경우, 효율성 테스트에서 런타임 에러 발생

 

반응형