https://www.acmicpc.net/problem/3273
정렬/두 포인터 문제로
역시나 그냥 반복문을 돌리니 시간초과가 떴다
이분탐색하여 두 포인터로 탐색해서 풀면 된다.
반복문 조건을 <=가 아닌 <로 해두어야한다는 점 유의.
파이썬 코드
import sys
input = sys.stdin.readline
n = int(input())
seq = []
seq = map(int, input().split())
x = int(input())
seq = sorted(seq)
start = 0
end = n-1
cnt = 0
while start < end:
if seq[start]+seq[end] == x:
cnt += 1
elif seq[start]+seq[end] < x:
start+=1
continue
end-=1
print(cnt)
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/BOJ/알고리즘/파이썬(python)]#2740_행렬 곱셈 (0) | 2021.09.20 |
---|---|
[백준/BOJ/알고리즘/파이썬(python)]#2941_크로아티아 알파벳 [문자열] (0) | 2021.09.19 |
[백준/BOJ/알고리즘/파이썬(python)]#8595_히든 넘버[문자열] (0) | 2021.09.17 |
[백준/BOJ/알고리즘/파이썬(python)]#10809_알파벳 찾기 (0) | 2021.09.17 |
[백준/BOJ/알고리즘/파이썬(python)/C++]#1920_수 찾기[이분탐색] (0) | 2021.09.17 |