728x90
반응형
def solution(sequence, k):
#길이가 짧은 것/ -> 시작인덱스작은것
#DP를 쓰면 좋을것같은데... 아닌가?
min_len=len(sequence)+1
i=0
jump=0
while i <len(sequence):
print(i)
if sequence[i]>k:
break
sum=0
for j in range(i, len(sequence)):
sum+=sequence[j]
if (sum==k):#k값이 충족이 된다면,
if (j-i) <min_len:
min_len=j-i #길이가 짧으면 갱신
answer = [i, j]
if (j-i)==0: #빠른 탈출
return answer
i=j #점프!
break
if(sum>k): #k값 넘어버린다면, for문탈출
break
i+=1
return answer
기존에 쓴 코드, 처음에는 더 길게 했다가, 시간초과가 뜨길래 dp문제인가 싶어 jump를 설정해서 의미없이 세는 것을 방지하고자했는데 실패..
결국 풀이를 보았따!!
슬라이딩 도어?!
def solution(sequence, k):
l=0
r=-1
sum=0
answer=[]
while(True):
if(sum<k):
r+=1
if( r>=len(sequence)):
break
sum+=sequence[r]
else:# sum>=k라면 이동이동
sum-=sequence[l]
if( l>=len(sequence)):
break
l+=1
if(sum==k): ##sum==k
answer.append([l,r])
answer.sort(key=lambda x: (x[1]-x[0], x[0]))
return answer[0]
sum>=k의 경우, 일단 가장 왼쪽의 숫자를 빼고 처리하기
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 요격 시스템 lv2 (0) | 2023.06.24 |
---|---|
[프로그래머스] 타겟넘버 파이썬 풀이 lv2 (0) | 2023.06.23 |
[프로그래머스] 공원 산책 lv1 파이썬 풀이 (0) | 2023.06.23 |
혼자 놀기의 달인 파이썬 풀이 (0) | 2023.06.21 |
[Mysql] 평균 일일 대여 요금 구하기 풀이 (0) | 2023.06.20 |