[프로그래머스 / Level 2] 짝지어 제거하기 (파이썬)

2022. 5. 11. 23:32·🎲 알고리즘 공부/프로그래머스

📝 문제

> 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 

 

    # 1. 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다.
    # 2. 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다.
    # 3. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다.
    # 4. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.

 

 

예시

- 이 문제는 최근에 들어온 문자와 들어올 문자가 같으면 둘다 pop을 시켜야하는 문제라서 stack이 적절할 것이라 생각해 stack을 이용해서 문제를 풀었다.

 

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

 

코딩테스트 연습 - 짝지어 제거하기

짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙

programmers.co.kr

 

🎨 풀이

💡 첫 번째 시도 = 성공 코드

 

def solution(s):
    answer = -1
    stack = []
    
    for i in range(len(s)):
        if len(stack) != 0 :
            if stack[-1] == s[i]:
                stack.pop()
            else :
                stack.append(s[i])
        else : stack.append(s[i])
    
    if len(stack) == 0:
        answer = 1
    else : answer = 0
    
    return answer

> 핵심 : 스택 이용!

 

1. stack이 비어있다면 그냥 append 시킨다.

2-1. 만약 stack[-1]과 s[i], 즉 스택의 마지막 꺼와 들어오려하는 문자가 같다면 스택에 있는 문자를 pop 시킨다.

2-2. 그게 아니라면 s[i]를 stack에 append 시킨다.

3. stack이 비어있다면 answer에 1을, 그렇지 않다면 answer에 0을 넣는다.

 

스택 절차 예시

 

​끝~

 

 

⭐ 느낀점

 

> 스택 잘 써서 기분이 좋다. 스택이 딱 떠오른 게 신기하기도 하고, 문제를 많이 풀다보면 그렇게 되나 싶기도 하고. 여튼 아주 뿌듯하다. 그래도 공부한 게 좀 도움이 되는 것 같다. 히히

'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글

[프로그래머스 / Level 1] 최소직사각형 (파이썬)  (0) 2022.05.13
[프로그래머스 / Level 1] 나머지가 1이 되는 수 찾기 (파이썬)  (0) 2022.05.12
[프로그래머스 / Level 1] 신고 결과 받기 (파이썬)  (1) 2022.05.10
[프로그래머스 / Level 1] 문자열을 정수로 바꾸기 (파이썬)  (0) 2022.05.09
[프로그래머스 / Level 1] 짝수와 홀수 (파이썬)  (0) 2022.05.08
'🎲 알고리즘 공부/프로그래머스' 카테고리의 다른 글
  • [프로그래머스 / Level 1] 최소직사각형 (파이썬)
  • [프로그래머스 / Level 1] 나머지가 1이 되는 수 찾기 (파이썬)
  • [프로그래머스 / Level 1] 신고 결과 받기 (파이썬)
  • [프로그래머스 / Level 1] 문자열을 정수로 바꾸기 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (267)
      • 📑 신입일기 (35)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 📘 독서 (0)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    코테
    스프링부트
    티스토리챌린지
    폰켓몬
    피보나치수
    스프링 부트
    신입일기
    50문답
    6월 목표
    코드업
    BOJ
    백준
    찬양추천
    프로그래머스
    codeup
    행렬덧셈
    til
    카카오
    연습문제
    정처기
    컨텐더스
    nodejs
    정보처리기사
    일기
    충무로
    파이썬
    오블완
    코린이
    오버워치
    코민이
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[프로그래머스 / Level 2] 짝지어 제거하기 (파이썬)
상단으로

티스토리툴바