코딩코딩

[프로그래머스] level2 - 짝지어 제거하기 : 파이썬(Python) 풀이

Jerry Jun 2021. 5. 26. 16:24
728x90

문제

프로그래머스-짝지어 제거하기 : 파이썬 풀이

 

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

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

programmers.co.kr

 

코드

def search(array, point):
    try:
        if(array[point] == array[point+1]):
            array.pop(point)
            array.pop(point)
            point = point-1 if point != 0 else 0
        else:
            point += 1
    except:
        pass
    
    return array, point

def solution(s):
    s = list(s)
    if len(set(s)) == len(s):
        return 0
    else:
        count = 0
        while len(s) > 1:
            s, count = search(s, count)
            if count+1 == len(s):
                break
        if len(s) == 0:
            return 1
        else:
            return 0

 

풀이

안타깝게도 효율성에서는 통과하지 못한 풀이다.

아무리 머리를 싸매도 효율성의 벽을 넘을 수 없었다.

 

본 문제는 주어진 배열에서 짝지어진 문자를 삭제하는 것이 포인트이다.

나는 함수 하나를 선언해 point 위치와 그 다음위치를 비교해 같다면 pop 을 통해 삭제하였다.

이후 인덱스(point)를 다시 원점으로 가는 것이 아닌 한 발짝 뒤로 물러섰다.

물론 인덱스가 0이었다면 -1이 되니 예외처리를 하였다.

 

이외에 문자열 s 의 길이가 0 또는 1인 경우에는 while 문을 돌 필요가 없으니 이 또한 설정했다.

내 효율성은 어디갔을까.

 

효율성 실패
프로그래머스 표지

300x250