728x90
문제
코드
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
'코딩코딩' 카테고리의 다른 글
[이코테] 음료수 얼려 먹기 - 파이썬 (0) | 2021.06.12 |
---|---|
[이코테] 왕실의 나이트 - 파이썬 (0) | 2021.06.10 |
[프로그래머스] level1 - 로또의 최고순위와 최저순위 : 파이썬(Python) 풀이 (0) | 2021.05.25 |
[프로그래머스] level1 - 신규 아이디 추천 : 파이썬(Python) 풀이 (0) | 2021.05.04 |
[프로그래머스] level1 - 두 개 뽑아서 더하기 : 파이썬(Python) 풀이 (0) | 2021.04.02 |