[알고리즘] 백준 - 수들의 합 2

June·2021년 8월 14일
0

알고리즘

목록 보기
232/260

백준 - 수들의 합 2

내 풀이

N, M = map(int, input().split())
numbers = list(map(int, input().split()))

left = 0
right = left + 1
cur_sum = numbers[left]
count = 0

while right < len(numbers):
    if cur_sum == M:
        count += 1
        cur_sum -= numbers[left]
        left += 1
    elif cur_sum < M:
        cur_sum += numbers[right]
        right += 1
    elif cur_sum > M:
        cur_sum -= numbers[left]
        left += 1

while left < len(numbers):
    if cur_sum == M:
        count += 1
        cur_sum -= numbers[left]
        left += 1
    elif cur_sum > M:
        cur_sum -= numbers[left]
        left += 1
    else:
        break

print(count)

알고리즘을 오랜만에 해서 그런지, 투포인터 문제라는 것을 알고도 배열이 정렬이 안되어있는데 투포인터를 어떻게 쓰지하고 고민을 했다.

다른 사람 풀이

import sys

n, target = map(int, input().split())
arr = list(map(int, input().split()))

lo, high = 0,1
tmp = arr[lo]
cnt = 0

while lo < n:
    if high==n and tmp < target:
        break

    if target == tmp:
        cnt +=1
        tmp -= arr[lo]
        lo +=1

    elif tmp < target:
        tmp += arr[high]
        high +=1

    elif tmp > target:
        tmp -= arr[lo]
        lo +=1

0개의 댓글