티스토리 뷰

[문제 링크]

https://school.programmers.co.kr/learn/courses/30/lessons/12973

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

[문제 고민]

  • While문과 For문을 이용해서 풀려고 했더니 시간복잡도에서 걸려버렸다. 이러한 문제는 스택(Stack) 개념을 통해 손쉽게 풀 수 있는 문제였다. 

 

[핵심 개념]

  • Stack (스택) - LIFO (Last In First Out): 후입선출
  • 프링글스를 생각하면 이해하기 쉽다. (프링글스를 먹을 때 가장 첫 번째로 먹는 과자는 맨 위에 있는 과자니까..?)
  • 같은 논리로 스택은 하나의 출구로만 삽입(push), 제거(pop) 구현이 가능하다. 

[추가 끄적]

 

  1. not과 not in의 차이?
  2. 조건문을 잘 활용하는 것에 따라 효율적인 코드를 만들 수 있다. (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

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함