Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 알고리즘
- Spring
- 자료구조
- 분할메모리할당
- C++
- codeup
- 프로그래머스
- 공부
- 기초100제
- Operating System
- 스프링
- 파이썬
- web
- 토이프로젝트
- 일상
- error
- 타입스크립트
- 정렬
- react
- memory
- 협업
- js to ts
- react-redux
- 코드업
- Java
- 리덕스장바구니
- OS
- 백준
- Redux
- CPU 스케줄링
Archives
- Today
- Total
감자튀김 공장🍟
[프로그래머스/Lv.2] 올바른 괄호 (with 파이썬) 본문
반응형
✔ 문제
문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12909
✔ 풀이
👾 오답 코드 (테스트 2, 6)
def solution(s):
check = []
for i in s:
if i == '(':
check.append(i)
elif i == ')':
if check:
if check.pop() == '(':
continue
if len(check) == 0:
return True
else:
return False
s[0]이 ')' 일 경우일 때가 있다.
🐳 정답
def solution(s):
check = [s[0]]
for i in range(1, len(s)):
if s[i] == '(':
check.append(s[i])
elif s[i] == ')':
if check:
if check.pop() == '(':
continue
if len(check) == 0:
return True
else:
return False
✔ 후기
효율성도 한번에 통과 됐는데 테스트 2, 6번만 틀려서 어떤 예시길래 틀리나 했더니 s[0]이 == ')' 인 경우를 생각하지 못했음을 알 수 있었다.
그래서 check[0]에 s[0]을 초기값으로 넣고 나머지 배열을 for문을 돌려 해결했다.
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스/Lv.1] K번째수 (with 파이썬) (0) | 2023.03.22 |
---|---|
[프로그래머스/Lv.2] 프린터 (with 파이썬) (0) | 2023.03.02 |
[프로그래머스/Lv.2] 기능개발 (with 파이썬) (0) | 2023.02.28 |
[프로그래머스/Lv.1] 같은 숫자는 싫어 (with 파이썬) (0) | 2023.02.27 |
[프로그래머스/Lv.3] 베스트 앨범 (with 파이썬) (0) | 2023.02.25 |
Comments