1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 투 포인터 알고리즘
n = 5 # 데이터의 개수 N
m = 5 # 찾고자 하는 부분합 M
data = [1, 2, 3, 2, 5] # 전체 수열
count = 0
interval_sum = 0
end = 0
# start를 차례대로 증가시키며 반복
for start in range(n):
# end를 가능한 만큼 이동시키기
while interval_sum < m and end < n:
interval_sum += data[end]
end += 1
# 부분합이 m일 때 카운트 증가
if interval_sum == m:
count += 1
interval_sum -= data[start]
print(count)
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# 구간합
# 데이터의 개수 N과 전체 데이터 선언
n = 5
data = [10, 20, 30, 40, 50]
# 접두사 합(Prefix Sum) 배열 계산
sum_value = 0
prefix_sum = [0]
for i in data:
sum_value += i
prefix_sum.append(sum_value)
# 구간 합 계산 (세 번째 수부터 네 번째 수까지)
left = 3
right = 4
print(prefix_sum[right] - prefix_sum[left - 1])
|
cs |
1
2
3
4
5
6
7
8
|
# 순열과 조합
import itertools
data = [1, 2, 3]
for x in itertools.combinations(data, 2):
print(list(x), end=' ')
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# 암호 만들기
from itertools import combinations
vowels = ('a', 'e', 'i', 'o', 'u') # 5개의 모음 정의
l, c = map(int, input().split(' '))
# 가능한 암호를 사전식으로 출력해야 하므로 입력 이후에 정렬 수행
array = input().split(' ')
array.sort()
# 길이가 l인 모든 암호 조합을 확인
for password in combinations(array,l):
# 패스워드에 포함된 각 문자를 확인하며 모음의 개수를 세기
count = 0
for i in password:
if i in vowels:
count += 1
# 최소 1개의 모음과 최소 2개의 자음이 잇는 경우 출력\
if count >= 1 and count <= l - 2:
print(''.join(password))
|
cs |