728x90
반응형
배열의 두 값을 이용한 문제일 때 두 포인터를 꼭 체크해야한다
- 제목
- 조건
시간 제한 : 2 초
메모리 제한 : 256 MB
- 문제
N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 “좋다(GOOD)”고 한다.
N개의 수가 주어지면 그 중에서 좋은 수의 개수는 몇 개인지 출력하라.
수의 위치가 다르면 값이 같아도 다른 수이다.
- 입력
첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수)
- 출력
좋은 수의 개수를 첫 번째 줄에 출력한다.
예제 입력1 | 예제 출력1 |
10 1 2 3 4 5 6 7 8 9 10 |
8 |
N = int(input())
arr = sorted(list(map(int, input().split())))
cnt = 0
for index in range(N):
l = 0
r = N - 1
while l < r:
if l == index or arr[l] + arr[r] < arr[index]:
l += 1
continue
if r == index or arr[l] + arr[r] > arr[index]:
r -= 1
continue
if arr[l] + arr[r] == arr[index]:
cnt += 1
break
print(cnt)
728x90
반응형
'Problem Solving > BaekJoon' 카테고리의 다른 글
[BOJ/백준] 28224 - Final Price (0) | 2023.07.19 |
---|---|
[BOJ/백준] 2206 - 벽 부수고 이동하기 (0) | 2023.07.19 |
[BOJ/백준] 9656 - 돌 게임 2 (0) | 2023.07.19 |
[BOJ/백준] 3566 - 대형 스크린 (0) | 2022.11.02 |
[BOJ/백준] 22352 - 항체 인식 (0) | 2022.09.22 |