[백준 파이썬 1253번]좋다★투 포인터 사용!! 값 비교하여★
2022. 12. 29. 10:36
728x90
반응형
https://www.acmicpc.net/problem/1253
1253번: 좋다
첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수)
www.acmicpc.net
import sys
N = int(sys.stdin.readline())
A = sorted(list(map(int , sys.stdin.readline().split(' '))))
Res = 0
for k in range(N):
find = A[k]
i_index = 0
j_index = N -1
# if A[i] != A[j]:
while True:
if A[i_index] + A[j_index] == find :
if i_index != k and j_index != k: #자기 자신을 포함하지 않는?
Res +=1
break
elif j_index==k:
j_index -= 1
elif i_index==k:
i_index += 1
elif A[i_index]+ A[j_index] < find: #find 값보다 작을 경우 작은 값의 인덱스 증가 시킨다.
i_index += 1
elif A[i_index] + A[j_index] > find: #find 값 보다 클 경우 큰 값의 인덱스 감소 시킨다.
j_index -= 1
if i_index>= j_index:
break
print(Res)
==>
EX) 5
0 0 2 2 2
==> 0(i 인덱스 : 0) +2( j 인덱스:3) = 2(k 인덱스 : 2)
==> 0(i 인덱스 : 0) +2(j 인덱스 : 4) = 2(k 인덱스: 3)
==> 0(i 인덱스 :0) + 2(j 인덱스 : 3) = 2(k 인덱스 : 4)
==> 3개 이다.
==> 0(i인덱스 : 0) + 2(j 인덱스 : 4) = 2(k 인덱스 : 4) 의 경우 자기자신을 포함시키면 안되므로 안된다!
==> 투 포인터 사용법 기억하자!!!!!! ==> i는 start , j는 end , k는 찾을 값
==> 작은 값 , 큰 값 비교하자!
728x90
반응형
'Python(백준) > 누적합' 카테고리의 다른 글
[백준 파이썬 1950번]주몽★정렬★인덱스값 구하기 (0) | 2022.12.28 |
---|---|
[백준 파이썬 11660번]구간 합 구하기5★2차원 누적 합(prefix sum) 알고리즘★ (0) | 2022.12.27 |
[백준 파이썬 11659번]구간 합 구하기4★누적 합(prefix sum) 알고리즘★더한것에 특정 열 빼기! (0) | 2022.12.26 |