코딩문제풀이/파이썬
[프로그래머스] 올바른 괄호 (파이썬)
오늘밤공부
2023. 3. 1. 13:34
반응형
🗓️ 문제 설명
- 올바른 괄호는 '('로 열려서 ')'로 닫혔다는 것을 의미합니다.
- '(' 또는 ')'로만 이루어진 문자열 s가 주어질 때, 괄호가 올바른 괄호인지 확인하여 True/False를 반환하세요.
- 제한 사항
- 문자열 s의 길이 : 100000이하의 자연수
- 문자열 s는 '(' 또는 ')'로만 이루어져 있습니다.
- 입출력 예시
s | answer |
"()()" | true |
"(())()" | true |
")()(" | false |
'(()(" | false |
💻 코드
최종 코드
- 주어진 s의 길이만큼 반복문을 실행할 경우, 효율성 테스트에서 런타임 에러 발생
- 수정사항 :
>> 반복문으로 모든 문자열을 찾아보는 것이 아닌 마지막 인덱스에서만 '('와 ')'를 비교하는 조건문 추가
코드 풀이
다른 사람 풀이
더보기

풀이 1번

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


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


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