Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- C언어
- php
- 종만북
- Python
- 생활코딩
- programmers
- dfs
- 정수론
- Cleancode
- String
- 백준
- 따라하면서 배우는 C언어
- udemy
- BASIC
- web
- Algospot
- BFS
- Math
- C
- sorting
- DP
- 따배씨
- server
- Algorithm
- graph
- 인프런
- 따라하며 배우는 C언어
- greedy
- BOJ
- JavaScript
Archives
- Today
- Total
몽상실현개발주의
[BOJ] 2003 / 수들의 합 2 / Python 파이썬 본문
[BOJ] 2003 / 수들의 합 2 / Python 파이썬
https://www.acmicpc.net/problem/2003
풀이
배열의 두 위치의 index 로 탐색하며, 경우의수를 구하는 문제이다.
처음시도는 두 index 를 양끝으로 갖는 구간의 합을 매번 새롭게 구해주는 방식으로 제출하였는데,
배열의 합을 구하는 method 까지 고려하면 3중 배열이 되어 시간초과가 발생하였다.
새롭게 만들어 지는 구간의 배열은 항상 연속되므로, 합을 새롭게 구하는 방식이 아닌 필요한 부분만 더해주고 필요없는 부분을 빼주는 방법을 적용하여 해결하였다.
N, M = map(int, input().split())
nums = list(map(int, input().split()))
s, e = 0, 1
tmp = nums[0]
res = 0
while s <= e:
if tmp == M:
res += 1
tmp -= nums[s]
s += 1
continue
if e == N and tmp < M:
break
if tmp < M:
tmp += nums[e]
e += 1
continue
if tmp > M:
tmp -= nums[s]
s += 1
continue
print(res)
'Algorithm PS > BOJ' 카테고리의 다른 글
[BOJ] 1806 / 부분 합 / Python 파이썬 (0) | 2021.08.12 |
---|---|
[BOJ] 1644 / 소수의 연속합 / Python 파이썬 (0) | 2021.08.12 |
[BOJ] 1182 / 부분수열의 합 / Python 파이썬 (0) | 2021.08.09 |
[BOJ] 6603 / 로또 / Python 파이썬 (0) | 2021.08.09 |
[BOJ] 1987 / 알파벳 / Python 파이썬 (0) | 2021.08.09 |
Comments