이호진
투 포인터 (2021/02/16) 본문
투 포인터란 2개의 변수를 이용해 리스트 상의 위치를 기록하는 것이다.
부분 합
리스트 [1, 2, 3, 2, 5] 가 주어질 때, 부분 합이 5인경우는 [2, 3], [3, 2], [5] 세 경우이다.
구하는 방법은
1. s와 e를 이용해서 0번째 자리부터 탐색한다.
2. 부분합이 5보다 작으면 e+1
3. 부분합이 5보다 크거나 같으면 s+1
4. 부분합이 5일 때, count 1 증가
n=5
m=5
data=[1,2,3,2,5]
count=0
interval_sum=0
end=0
for s in range(n):
while interval_sum<m and end<n:
interval_sum+=data[end]
end+=1
if interval_sum ==m:
count+=1
interval_sum-=data[s]
print(count)
포인터를 이용한 정렬
a = [1, 3, 5]
b = [2, 4, 6, 8] 일 때,
포인터를 이용하여 정렬할 수 있다.
1. i값과 j값을 비교한다.
2. 둘 중 작은 값을 비어있는 리스트에 넣는다.
3. 비어있는 리스트의 주소값을 증가시킨다.
n=3
m=4
a=[1,3,5]
b=[2,4,6,8]
result=[0]*(n+m)
i=0
j=0
k=0
while i<n or j<m:
if j>=m or(i<n and a[i] <= b[j]):
result[k]=a[i]
i+=1
else:
result[k]=b[j]
j+=1
k+=1
for i in result:
print(i, end=' ')
'기본적인 알고리즘' 카테고리의 다른 글
1로 만들기 - 동적 프로그래밍 - 2021/05/03 (0) | 2021.05.03 |
---|---|
가장 긴 증가하는 부분 수열 - 동적 프로그래밍 - 2021/05/03 (0) | 2021.05.03 |
숫자 두 개를 입력 받아 그 사이의 소수를 출력하는 코드 (2021/02/17) (0) | 2021.02.17 |
소수의 판별, 에라토스테네스의 채 (2021/02/16) (0) | 2021.02.16 |