본문 바로가기

CodingTest/Programmers

[ 프로그래머스 ] 짝지어 제거하기

/  제출 1  /

 

def solution(s):
    answer = -1
    s = list(s)
    strStack = []
    
    for char in s:
        if not strStack:
            strStack.append(char)
        else:
            if strStack[-1] == char:
                strStack.pop()
    return int(not bool((strStack)))
채점 결과
정확성: 59.7
효율성: 39.8
합계: 99.5 / 100.0
 
바로 구현 방식이 떠오르고 예제도 쉽게 풀려 바로 제출했는데 정확성의 테스트 케이스(13)를 하나 통과하지 못했습니다.
자만이었던 것 같습니다. LV1을 풀고 와서 이 문제도 들이대면 풀릴 줄 알았던건 지 ..
수정해보도록 하겠습니다. 
 
 
/  제출 2  /
def solution(s):
    answer = -1
    s = list(s)
    strStack = []
    
    for char in s:
        if not strStack:
            strStack.append(char)
        else:
            if strStack[-1] == char:
                strStack.pop()
            else:			# 추가 부분입니다.
                strStack.append(char)	# 이 때 strStack에 값이 들어가지 않아서 오류가 난 것이었습니다.
    return int(not bool((strStack)))
채점 결과
정확성: 60.2
효율성: 39.8
합계: 100.0 / 100.0
 
조건 하나를 설정하지 않아서 마지막 값이 제대로 안 들어가는 경우가 생겼던 것이었습니다.
스택에 대해서 값이 제대로 들어가지 않았기에 마지막에 스택에 값이 있는지 없는지의 여부로 확인해서 오류가 난 것이었습니다. 
코드의 작동 흐름에 대해서 집중하지 않았기에 한 실수 같아서 이유를 알고 부끄러웠습니다.