본문 바로가기
알고리즘 문제/자료구조&알고리즘

기타알고리즘(리스트)

by 태윤2 2020. 10. 24.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 투 포인터 알고리즘
= 5 # 데이터의 개수 N
= 5 # 찾고자 하는 부분합 M
data = [12325# 전체 수열
 
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과 전체 데이터 선언
= 5
data = [1020304050]
 
# 접두사 합(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 = [123]
 
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

 

 

 

 

 

'알고리즘 문제 > 자료구조&알고리즘' 카테고리의 다른 글

구현 기출  (0) 2020.10.24
그리디 기출  (0) 2020.10.24
기타 알고리즘(소수)  (0) 2020.10.24
그래프 이론  (0) 2020.10.24
최단경로 예제  (0) 2020.10.24