Notice
Recent Posts
Recent Comments
Link
유자차의 재테크 공부방
[프로그래머스] 햄버거 만들기 본문
반응형
프로그래머스 Lv1. 햄버거 만들기 [문제]
풀이 방법 1(실패)
replace() 사용 -> 시간초과
def solution(ingredient):
answer=0
ingredient = "".join(str(i) for i in ingredient) # list to string
while ingredient.find("1231") != -1:
ingredient = ingredient.replace("1231", "",1)
answer+=1
return answer
풀이방법 2(성공)
index를 사용해서 4개씩 보고 맞으면 del로 삭제.
삭제시킨 index-2부터 4개씩 확인 필요 ex) 12123131
index-3 불가능. 1231231이기때문에 이미 충족이 되어버려 앞부분 없어짐.
def solution(ingredient):
ans=0
idx=0
len_check=len(ingredient)
while True:
for i in range(idx, len(ingredient)-3):
if ingredient[i:i+4] == [1,2,3,1]:
del ingredient[i:i+4]
ans+=1
if i > 2:
idx=i-2
else:
idx=0
break
if len_check == len(ingredient):
break
else:
len_check = len(ingredient)
return ans
풀이방법 3(시간 단축)
ingredient에서 하나씩 받아와서 최근 4개를 확인하여 del로 삭제
def solution(ingredient):
ans=0
check=[]
for i in ingredient:
check.append(i)
if check[-4:] == [1,2,3,1]:
del check[-4:]
ans+=1
return ans
풀이방법2는 반복되는 부분이 있어, 풀이방법3과 4와 시간 차이를 보인다.
3과 4는 삭제하는 방법이 다른데 pop보단 del로 삭제하는 것이 조금 더 좋아보인다.
풀이방법 4
del 대신 pop으로 삭제
def solution(ingredient):
ans=0
check=[]
for i in ingredient:
check.append(i)
if check[-4:] == [1,2,3,1]:
check.pop()
check.pop()
check.pop()
check.pop()
ans+=1
return ans
반응형
'파이썬 > 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭 (0) | 2022.06.28 |
---|---|
[프로그래머스] 주식가격 (0) | 2022.06.27 |
[프로그래머스] 비밀지도 (0) | 2022.03.19 |
[프로그래머스] 최대공약수와 최소공배수 (0) | 2022.03.19 |
[프로그래머스] 문자열 내 마음대로 정렬하기 (0) | 2022.03.18 |
Comments