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 | 31 |
Tags
- 10430번
- cp949
- Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
- 파이썬 |
- 항해
- vscode cp949
- MomentumParameters
- 파이썬 클래스
- 파이썬 map 함수
- fatal:not a git repository
- 파이썬 sep
- 주니어개발자역량강화
- 99클럽 #99일지 #코딩테스트 #개발자스터디 #항해 #til
- 개발자사이드프로젝트
- print("""
- 99클럽
- EnvCommandError
- not a git repository
- 코딩테스트
- 항해플러스
- 파이썬 int()
- 개발자스터디
- print sep
- Til
- 주니어개발자멘토링
- 파이썬
- 99일지
- 항해99
- 백준
- 코딩부트캠프후기
Archives
- Today
- Total
선발대
[스파르타] 99클럽 2기 코테스터디 37일차 TIL / leet 921 본문
Leetcode: 921. Minimum Add to Make Parentheses Valid (링크)
문제설명
문자열 s가 주어졌을 때 완벽히 합이 맞는 괄호 쌍이 되려면 여닫는 괄호를 몇 개 추가해야 하는지 찾는 문제이다.
간단히 말하자면 짝이 없는 괄호의 개수를 구하면 된다.
예1) 입력값: s = "())" / 출력값: (()) 여는 괄호 1개가 더 필요하므로 1 출력
예2) 입력값: s = "(((" / 출력값: ((())) 닫는 괄호 3개가 더 필요하므로 3 출력
풀이 설명
(1) 빈 리스트 ans를 정의한다.
(2) 입력값 s를 for문으로 하나씩 돌면서 '(' 인 경우에는 ans.append를, ')'인 경우에는 ans.pop을 해준다.
(3) 다만 일반적인 괄호쌍 문제에서는 보통 스택에 '('를 넣어두고 ')'을 만날 때마다 스택을 pop 해주는 방식인데,
여기에서는 괄호쌍이 없는 '(', ')' 둘 다 카운트해야 하므로 ')' 을 만날 때 그 이후 조건을 2가지로 나누었다.
(3-1) 바로 직전의 i가 '(' 였다면 현재 i인 ')'을 만나 괄호쌍을 만족하므로 ans.pop()을 진행한다.
(3-2) 바로 직전의 i가 ')' 였다면 괄호쌍을 만족하지 못하므로 ans.append를 진행한다.
(4) 최종적으로 ans에는 짝이 안 맞는 괄호들이 모여있으므로 ans의 길이를 리턴해주면 된다.
class Solution:
def minAddToMakeValid(self, s: str) -> int:
ans = []
for i in s:
if i == '(':
ans.append(i)
else:
if ans and ans[-1] == '(':
ans.pop()
else:
ans.append(i)
return len(ans)
'스파르타코딩클럽 > 활동 내용' 카테고리의 다른 글
[스파르타] 99클럽 2기 코테스터디 39일차 TIL / leet 1338 (0) | 2024.06.27 |
---|---|
[스파르타] 99클럽 2기 코테스터디 38일차 TIL / leet 921 (0) | 2024.06.26 |
[스파르타] 99클럽 2기 코테스터디 36일차 TIL / leet 2390 (0) | 2024.06.24 |
[스파르타] 99클럽 2기 코테스터디 35일차 TIL / leet 341 (0) | 2024.06.23 |
[스파르타] 99클럽 2기 코테스터디 34일차 TIL / leet 1823 (0) | 2024.06.22 |
Comments