# 백준 1543번 문제검색 링크 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net |
Key point
- 투 포인트 알고리즘을 사용한다.
- 앞에서부터 하나씩 target으로 잡고 조건이 성립되는지 확인한다.
문제 코드
import sys
input= sys.stdin.readline
N=int(input())
numbers=list(map(int, input().split()))
numbers.sort()
cnt=0
for i in range(N): #앞에서부터 하나씩 확인
find=numbers[i]
start=0
end=N-1
while start<end:#투포인트 알고리즘 적용
if numbers[start]+numbers[end]>find:
end-=1
elif numbers[start]+numbers[end]<find:
start+=1
else: #만약 조건이 성립되고 찾으려는 대상과 비교대상이 같지 않다면 cnt+=1
if i!=start and i!= end:
cnt+=1
break
elif i==start:
start+=1
elif i==end:
end-=1
#결과 출력
print(cnt)
'algorithm > baekjoon 문제' 카테고리의 다른 글
[백준 11003번] 최솟값 찾기 (0) | 2022.12.15 |
---|---|
[백준 10986] 나머지 합 (0) | 2022.12.13 |
[백준 11660] 구간 합 구하기 5 (0) | 2022.12.12 |
[백준 11659]구간 합 구하기4 (0) | 2022.12.12 |
등수 매기기[2012번] (0) | 2022.07.10 |