-
[백준 2018] 수들의 합 5 (Python)Algorithm & Problem Solving/투 포인터(Two Pointer) 2020. 12. 26. 18:34
문제풀이
N : 입력값
arr : 배열(1부터 N)
start, end : 투 포인터를 위한 포인터
now : 현재까지 더한 값
투 포인터(start, end)를 이용하여 해결할 수 있다.
1. N을 입력하고 배열(arr)에 1부터 N까지의 값을 넣어준다.
2. end와 now를 이용하여 now가 N이상이 될 때 까지 now에 arr[end]를 더하고 end를 1 증가시키는 과정을 반복한다.
3. 2의 과정 후 now가 N이면 결과값(ans)를 1 증가시킨다.
4. now에서 현재까지 더한 값 중 가장 좌측에 위치한 arr[start]를 빼준다.
5. 2~4 과정을 start가 배열의 마지막에 도달할 때 까지 반복한다.
6. 결과(ans)를 출력한다.
코드
if __name__ == '__main__': N = int(input()) arr = [i for i in range(1, N + 1)] now, end = 0, 0 ans = 0 for start in range(N): while end < N and now < N: now += arr[end] end += 1 if now == N: ans += 1 now -= arr[start] print(ans)
결과
문제풀이나 코드에서 이상한 부분 지적은 언제나 환영합니다!
'Algorithm & Problem Solving > 투 포인터(Two Pointer)' 카테고리의 다른 글
[백준 1484] 다이어트 (Python) (0) 2020.12.29 [백준 14746] Closest Pair (Python) (0) 2020.12.29 [백준 7795] 먹을 것인가 먹힐 것인가 (Python) (0) 2020.12.27 [백준 3273] 두 수의 합 (Python) (0) 2020.12.26 [백준 2230] 수 고르기 (Python) (0) 2020.12.26