def solution(str):
	lst = [i for i in str]
	temp = 1;
	flag = 0;
	if len(lst) % 2 != 0 :
			return 0;
	while temp < len(lst):
		if lst[temp-1] == lst[temp]: 
				lst.pop(temp-1)
				lst.pop(temp-1)
				temp = temp-1 if temp >= 2 else temp;
		#		print(lst)
	#			print("temp", temp)
				flag = 1;
				continue;
		else:
				if flag == 1:
						return 0
				else:
						temp +=1;
	num = 1 if len(lst) == 0 else 0;
	return num;


위 코드는 보면 최초에는 flag 값을 안줬다.

이렇게 코드를 실행할 경우 위 알고리즘은 주어진 단어를 끝까지 다 확인을 해야한다 = 시간이 초과된다.

이 문제의 핵심은 단어를 모두 확인하는것이 아니라 오히려 안되는 경우를 얼마나 빠르게 찾아내느냐 인것 처럼 보인다.


그렇기에 내가 접근했던 방식은 한번이라도 글자가 짝지어제거됬을경우 다음에 안되는 경우가 나오면 무조건 아니다 라고 하고 싶었으나

추가적으로 뒤에 더 가서 없어지는 경우가 있을 수도 있음을 알게 되었다.

+ Recent posts