본문 바로가기

코딩/Lua

[Lua] 백준 2003 수들의 합 2

예전에 풀려고 했을 때는 꽤 애먹었던 문제였는데, 다시 구현하니까 쉽게 풀렸던 문제.

여기서 핵심은 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)