Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
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
Tags
more
Archives
Today
Total
관리 메뉴

그냥하는코딩

프로그래머스 2단계 - 짝지어 제거하기 본문

부스트캠프 준비기/코딩테스트 알고리즘

프로그래머스 2단계 - 짝지어 제거하기

UKkim 2021. 5. 19. 23:00

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

 

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

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

programmers.co.kr

1. 문제이해

 - 앞에서부터 문자를 읽고 중복된 알파벳이 나올시 제거.

 - 알파벳을 하나씩 꺼내어 담고 꺼낸알파벳과 마지막에 담긴 값이 일치하면 마지막에 담긴 값을 제거.(스택)

 ex) baabaa => b => ba => (baa -> b) => (bb -> '') => a => (aa -> '') => ''

 - 공백이면 1, 아니면 0 을 리턴

 

2. 코드작성

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

    return answer

※ 시간복잡도

=> O(len(s))

 

3. 풀이 간 체크사항

 1) for 문 활용

  # for i in range(10) : 0~9 범위

  # for i in range(from, to, increase) : range(0, 10, 1) or range(10, 0, -1) 과 같이 작성 가능

 

 2) Stack 의 사용

  - Stack은 FILO 기법이 활용된 자료구조이다.

  - 파이썬에서는 [] 리스트로 해당 기능을 구현할 수 있다.

  # list.append() : 값 넣기 (stack.push) 

  # list[-1] : 가장위의 값 가져오기 (stack.peek) / 값을 읽기만 한다.

  # list.pop() : 가장위의 값 꺼내오기 / list의 가장 마지막값을 리턴하고 list에서 지운다.

 

 

파이썬 언어로 풀이를 하다보니 기본적인 문법도 헷갈리는게 많다. 익숙해지도록 많은 문제를 풀어보기로 하자.

Comments