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 |
Tags
- 기계학습
- NLP
- dl
- 파이썬
- LeetCode
- 부스트캠프
- machinelearning
- Django
- GPT
- rnn
- Programmers
- gradient descent
- Linear Model
- 머신러닝
- BFS
- LLM
- 코테
- 코딩테스트
- 프롬프트
- ChatGPT
- Deeplearning
- 알고리즘
- transformer
- deque
- 프로그래머스
- Linear Regression
- attention
- prompt engineering
- 일기
- Python
Archives
- Today
- Total
크크루쿠쿠
문제 풀때 주의사항 (프로그래머스 - 짝지어 제거하기 with Python) 본문
그냥 무작정 풀지않기
-> 이 문제가 어떤 자료구조, 알고리즘을 사용해야하는지 유심히 볼 필요가 있음.
programmers.co.kr/learn/courses/30/lessons/12973
코딩테스트 연습 - 짝지어 제거하기
짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙
programmers.co.kr
문제가 쉽다 생각해서 그냥 간단히 풀려했음
def solution(s):
s=list(s)
while s: # 다 비거나 찌꺼기 남을때까지
k=len(s)
for index,(i,j) in enumerate(zip(s,s[1:])):
if i==j:
k=index
if k==len(s):
return 0
s=s[:k]+s[k+2:]
return 1
답은 잘 찾는거같은데 시간초과
그래서 어떻게 할지 생각하던중 문제가 스택을 쓰면 어처구니 없이 쉽고 시간복잡도가 O(n) 으로 줄어드는걸 확인
정답코드:
def solution(s):
answer = 0
stack=['BOTTOM']
for i in s:
if stack[-1]==i:
stack.pop()
else:
stack.append(i)
if len(stack)==1:
answer=1
return answer
앞으론 무작정 풀려고만 하지말기
'알고리즘' 카테고리의 다른 글
| [프로그래머스] 프린터 파이썬 (0) | 2021.05.17 |
|---|---|
| [프로그래머스][카카오 2018] 뉴스 클러스터링 (0) | 2021.05.15 |
| 코딩테스트 주의사항 (0) | 2021.05.03 |
| [Programmers] 전화번호 목록 (0) | 2021.04.23 |
| 백준 14891 톱니바퀴 Python 3 (0) | 2020.11.26 |
Comments