| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- java #자바 #동빈나
- 다익스트라
- 백준 #파이썬 #알고리즘 #코딩테스트
- 프로그래머스
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- 농구
- react #리액트 #동빈나 #나동빈 #유튜브강의
- 다이나믹프로그래밍
- java #자바
- 파이썬 #백준 #알고리즘 #코딩테스트
- 알고리즘
- 재귀
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- PYTHON
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- 투포인터
- Dijkstra
- 코딩테스트
- 백준
- 백준 #알고리즘 #파이썬 #코딩테스트
- java #자바 #생활코딩
- dp
- 자바 #java
- 백트랙킹
- java #자바 #나동빈
- css #웹 #생활코딩
- css #생활코딩 #웹
- DFS
- BFS
- 파이썬
Archives
- Today
- Total
커리까지
[프로그래머스] 올바른 괄호 본문
728x90
SMALL
문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예
| s | answer |
|---|---|
| "()()" | true |
| "(())()" | true |
| ")()(" | false |
| "(()(" | false |
입출력 예 설명
입출력 예 #1,2,3,4
문제의 예시와 같습니다.
제출 답안
deque
- deque에
(면 append하고)면 popleft한다. - 만약 deque가 비어있는데
)가 오면 괄호가 될 수 없으니 바로 False를 리턴한다. - 모든 for loop를 돌고 dequq가 비어있으면 True, 비어있지 않으면 False를 리턴한다.
from collections import deque
def solution(s):
brackets = deque()
for bracket in s:
if bracket == "(":
brackets.append(bracket)
else:
if not brackets:
return False
brackets.popleft()
if brackets:
return False
return True
- 정확성
| 테스트 1 〉 | 통과 (0.00ms, 10.2MB) |
|---|---|
| 테스트 2 〉 | 통과 (0.00ms, 10.3MB) |
| 테스트 3 〉 | 통과 (0.00ms, 10.2MB) |
| 테스트 4 〉 | 통과 (0.00ms, 10.2MB) |
| 테스트 5 〉 | 통과 (0.00ms, 10.2MB) |
| 테스트 6 〉 | 통과 (0.00ms, 10.2MB) |
| 테스트 7 〉 | 통과 (0.00ms, 10.2MB) |
| 테스트 8 〉 | 통과 (0.00ms, 10.1MB) |
| 테스트 9 〉 | 통과 (0.00ms, 10.1MB) |
| 테스트 10 〉 | 통과 (0.00ms, 10.2MB) |
| 테스트 11 〉 | 통과 (0.00ms, 10.3MB) |
| 테스트 12 〉 | 통과 (0.02ms, 10.1MB) |
| 테스트 13 〉 | 통과 (0.01ms, 10.2MB) |
| 테스트 14 〉 | 통과 (0.01ms, 10.1MB) |
| 테스트 15 〉 | 통과 (0.01ms, 10.1MB) |
| 테스트 16 〉 | 통과 (0.01ms, 10.1MB) |
| 테스트 17 〉 | 통과 (0.01ms, 10.2MB) |
| 테스트 18 〉 | 통과 (0.02ms, 10.2MB) |
- 효율성
| 테스트 1 〉 | 통과 (6.65ms, 10.4MB) |
|---|---|
| 테스트 2 〉 | 통과 (6.50ms, 10.3MB) |
값 더하기
(가 나오면 1을 더하고)가 나오면 1을 뺀다.- 만약
)가 나왔는데 answer가 0이면 올바른 괄호가 아니니 바로 False를 반환한다. - 모든 for loop이후 answer가 0이 아니면 False, 0이면 True를 반환한다.
- deque보다 더 빠르고 효율성이 좋다.
def solution(s):
answer = 0
for bracket in s:
if bracket == "(":
answer += 1
else:
if answer == 0:
return False
answer -= 1
if answer != 0:
return False
return True
- 정확성
| 테스트 1 〉 | 통과 (0.00ms, 10.1MB) |
|---|---|
| 테스트 2 〉 | 통과 (0.00ms, 10.1MB) |
| 테스트 3 〉 | 통과 (0.00ms, 10.1MB) |
| 테스트 4 〉 | 통과 (0.00ms, 10.2MB) |
| 테스트 5 〉 | 통과 (0.00ms, 10.2MB) |
| 테스트 6 〉 | 통과 (0.00ms, 10.1MB) |
| 테스트 7 〉 | 통과 (0.00ms, 10.3MB) |
| 테스트 8 〉 | 통과 (0.00ms, 10.2MB) |
| 테스트 9 〉 | 통과 (0.00ms, 10MB) |
| 테스트 10 〉 | 통과 (0.00ms, 10.1MB) |
| 테스트 11 〉 | 통과 (0.00ms, 10.1MB) |
| 테스트 12 〉 | 통과 (0.01ms, 10.2MB) |
| 테스트 13 〉 | 통과 (0.01ms, 10.1MB) |
| 테스트 14 〉 | 통과 (0.01ms, 10MB) |
| 테스트 15 〉 | 통과 (0.01ms, 10.2MB) |
| 테스트 16 〉 | 통과 (0.01ms, 10.1MB) |
| 테스트 17 〉 | 통과 (0.01ms, 10.1MB) |
| 테스트 18 〉 | 통과 (0.01ms, 10.1MB) |
- 효율성
| 테스트 1 〉 | 통과 (5.67ms, 10.2MB) |
|---|---|
| 테스트 2 〉 | 통과 (5.96ms, 10.2MB) |
728x90
LIST
'알고리즘 > 풀이' 카테고리의 다른 글
| [프로그래머스] 멀리 뛰기 (1) | 2022.10.11 |
|---|---|
| [프로그래머스] 124 나라의 숫자 (0) | 2022.10.10 |
| [프로그래머스] 다음 큰 숫자 (1) | 2022.10.08 |
| [프로그래머스] 피보나치 수 (1) | 2022.10.08 |
| [프로그래머스] 2022 카카오 블라인드 주차 요금 계산 (0) | 2022.10.06 |
Comments