예전에 풀려고 했을 때는 꽤 애먹었던 문제였는데, 다시 구현하니까 쉽게 풀렸던 문제.
여기서 핵심은 start와 endd가 같을 때에도 while문이 작동하도록 해서 한 개의 원소만 가리킬 수 있도록 하는 것이다.
n,m=io.read("*n","*n")
arr={}
for i=1,n,1 do arr[i]=io.read("*n") end
start,endd,sum,cnt=1,1,arr[1],0
while start<=endd and endd<=n do
if endd==n and sum<=m then
if sum==m then cnt=cnt+1 end
break
end
if sum<m then
endd=endd+1
sum=sum+arr[endd]
elseif sum==m then
cnt=cnt+1
endd=endd+1
sum=sum+arr[endd]
else
sum=sum-arr[start]
start=start+1
if start>endd and endd<=n-1 then endd=endd+1 sum=sum+arr[endd] end
end
end
io.write(cnt)
'코딩 > Lua' 카테고리의 다른 글
[Lua] 백준 25419 정수를 끝까지 외치자 (0) | 2023.12.14 |
---|---|
[Lua] 백준 1826 연료 채우기 (2) | 2023.12.04 |
[Lua] 백준 13913 숨바꼭질 4 (0) | 2023.02.26 |
[Lua] 백준 27440 1로 만들기 3 (0) | 2023.02.19 |
[Lua] 백준 14852 타일 채우기 3 (0) | 2022.12.22 |