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 값을 안줬다.
이렇게 코드를 실행할 경우 위 알고리즘은 주어진 단어를 끝까지 다 확인을 해야한다 = 시간이 초과된다.
이 문제의 핵심은 단어를 모두 확인하는것이 아니라 오히려 안되는 경우를 얼마나 빠르게 찾아내느냐 인것 처럼 보인다.
그렇기에 내가 접근했던 방식은 한번이라도 글자가 짝지어제거됬을경우 다음에 안되는 경우가 나오면 무조건 아니다 라고 하고 싶었으나
추가적으로 뒤에 더 가서 없어지는 경우가 있을 수도 있음을 알게 되었다.
'1일 1문제, 프로그래머스' 카테고리의 다른 글
프로그래머스, 레벨3, 입국심사 (4) | 2018.10.06 |
---|---|
이제는 1주에 1문제 내지 2문제로... ㅠ_ㅠ (0) | 2018.08.21 |
2017 팁스타운, 예상대진표 (0) | 2018.08.15 |
레벨2, N개의 최소 공배수 (0) | 2018.08.12 |
프로그래머스, 레벨3, 야근지수(못품) (0) | 2018.08.02 |