티스토리 뷰
Tech Stacks, Concepts/Algorithm
[프로그래머스] Lv2. 짝지어 제거하기 (파이썬) / Stack (스택) 개념
minminn 2023. 4. 12. 14:23[문제 링크]
https://school.programmers.co.kr/learn/courses/30/lessons/12973
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제 고민]
- While문과 For문을 이용해서 풀려고 했더니 시간복잡도에서 걸려버렸다. 이러한 문제는 스택(Stack) 개념을 통해 손쉽게 풀 수 있는 문제였다.
[핵심 개념]
- Stack (스택) - LIFO (Last In First Out): 후입선출
- 프링글스를 생각하면 이해하기 쉽다. (프링글스를 먹을 때 가장 첫 번째로 먹는 과자는 맨 위에 있는 과자니까..?)
- 같은 논리로 스택은 하나의 출구로만 삽입(push), 제거(pop) 구현이 가능하다.
[추가 끄적]
- not과 not in의 차이?
- 조건문을 잘 활용하는 것에 따라 효율적인 코드를 만들 수 있다. (ex) 조건을 걸고 append를 쓰면 해당 조건에 맞는 것만 append 함.
[해답 코드]
def solution(s):
letters = []
for letter in s:
if letter not in letters:
letters.append(letter)
else:
if letters[-1] == letter: # letters의 마지막 원소와 letter 비교
letters.pop() # 있다면 letters에서 제거
else:
letters.append(letter) # 없다면 letters에서 추가 후 다시 비교
if len(letters) > 0:
answer = 0
else:
answer =1
return answer
'Tech Stacks, Concepts > Algorithm' 카테고리의 다른 글
[프로그래머스] Lv2. 최솟값 만들기 (파이썬) (0) | 2023.04.15 |
---|---|
[프로그래머스] Lv2. 올바른 괄호 (파이썬) / Stack (스택) (0) | 2023.04.14 |
[프로그래머스] Lv1. 크기가 작은 부분문자열 (1) | 2023.04.14 |
[프로그래머스] Lv1. K번째수 (파이썬) / 정렬 (0) | 2023.04.13 |
[프로그래머스] Lv2. 카펫 (파이썬) / 완전탐색 (0) | 2023.04.13 |
댓글