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
- Python
- segmenation map generation
- emerdiff
- DP
- transformer
- diffusion model
- 3d editing
- image editing
- video generation
- controllable video generation
- BOJ
- 논문리뷰
- 3d generation
- segmentation map
- dreammotion
- Programmers
- diffusion models
- Vit
- diffusion
- magdiff
- style align
- visiontransformer
- score distillation
- controlnext
- video editing
- 코딩테스트
- 프로그래머스
- VirtualTryON
- 코테
- 네이버 부스트캠프 ai tech 6기
Archives
- Today
- Total
평범한 필기장
[Programmers_Python] 짝지어 제거하기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/12973
내가 생각한 풀이방식
나는 연속된 문자가 나타나면 제거하고 제거되고 남은 문자들을 이어붙이는 방식으로 풀려고 했다. 아래 코드와 같이 푸니까 시간초과가 났다. Stack 자료구조를 이용할 생각을 못했다.
def solution(s):
while True:
if len(s) == 0:
return 1
bf_s = str(s)
for i in range(len(s) - 1):
if s[i] == s[i+1]:
if i == 0:
s = s[i+2:]
break
elif i == len(s) - 1:
s = s[:i]
break
else:
s = s[:i] + s[i+2:]
break
if bf_s == s:
return 0
올바른 풀이방식
문자열 앞에서부터 하나씩 Stack에 넣는데 Stack의 마지막 문자와 넣으려는 문자가 같으면 Stack에 넣지 않는다. 문자열에 있는 문자에 대해 모두 반복을 마치고 나서 Stack에 문자가 남아있으면 0을 없으면 1을 return하게 한다.
def solution(s):
stack = []
for i in s:
if not stack:
stack.append(i)
elif stack[-1] == i:
stack.pop()
else:
stack.append(i)
if not stack:
return 1
else:
return 0
Stack 자료구조를 배웠음에도 이용하지 못했다. 아직 경험이 부족해서 그런지 내가 아는 것들을 다 이용하지 못하는 것 같다. 꾸준히 해서 생각하는 폭을 넓혀야겠다.
'코딩 테스트 준비 > Programmers' 카테고리의 다른 글
[Programmers_Python] 뒤에 있는 큰 수 찾기 (0) | 2023.04.04 |
---|---|
[Programmers_Python] 2개 이하로 다른 비트 (0) | 2023.04.04 |
[Programmers_Python] 위장 (0) | 2023.03.31 |
[Programmers_Python] 뉴스 클러스터링 (0) | 2023.03.30 |
[Programmers_Python] 압축 (0) | 2023.03.28 |