일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 재귀
- Regression
- programmers
- python3
- 프로그래머스
- LSTM
- 파이썬
- Python
- kmu
- googleapiclient
- 국민대
- 회귀
- 머신 러닝
- C++
- gan
- 정렬
- Heap
- Stack
- instaloader
- db
- machine learning
- 운영체제
- 스택
- PANDAS
- OS
- GIT
- Seq2Seq
- 국민대학교
- SQL
- 데이터베이스
Archives
- Today
- Total
정리 노트
프로그래머스 짝지어 제거하기(Python) 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/12973
이 문제는 시간 초과 때문에 조금 생각을 했던 문제였다. '질문하기' 탭에서 스택이라는 단어를 언뜻 보고 난 후 깨달음을 얻어 스택을 이용해 풀었더니 바로 해결되었다.
나의 풀이
스택을 이용해 풀어야겠다 생각을 하고서 생각해낸 풀이 과정은 다음과 같다.
- 처음에 비어있는 스택을 선언한다.
- 문자열의 알파벳들을 하나씩 스택에 추가한다.
- 스택에 항목을 추가할 때마다 스택에 항목들이 최소 2개가 있으며 스택의 top 포인터가 가리키는 값과 그 전 값이 같은지 확인하고 같으면 두 항목을 제거한다.
- 마지막에 스택의 길이를 보고 결과를 판정한다.
풀이 과정을 코드로 쓰면 아래와 같다.
def solution(s):
stack = []
top = len(stack) - 1
for alphabet in s:
stack.append(alphabet)
top += 1
if len(stack) > 1 and stack[top] == stack[top - 1]:
stack.pop()
stack.pop()
top -= 2
if len(stack) > 0:
return 0
else:
return 1
프로그래머스 효율성 테스트 채점 결과 최대 276.02ms가 걸렸고, 최대 16.4MB를 사용했다.
질문하기 탭을 보지 않았더라면 아마 스택을 생각해내지 못했을 것이다.. 아직 문제 풀이 경험이 부족해서 곧바로 생각나지 않는 것 같다. 좀 더 많이 풀어보자!
728x90
'프로그래머스 코딩테스트 연습' 카테고리의 다른 글
프로그래머스 크레인 인형 뽑기(Python) (0) | 2022.07.01 |
---|---|
프로그래머스 멀쩡한 사각형(Python) (0) | 2022.06.29 |
프로그래머스 숫자 문자열과 영단어(Python) (0) | 2022.06.25 |
프로그래머스 키패드 누르기(Python) (0) | 2022.06.24 |
프로그래머스 타겟 넘버 (0) | 2022.06.24 |