[Gold IV] Title: 좋다, Time: 676 ms, Memory: 40724 KB -BaekjoonHub
This commit is contained in:
32
백준/Gold/1253. 좋다/README.md
Normal file
32
백준/Gold/1253. 좋다/README.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# [Gold IV] 좋다 - 1253
|
||||||
|
|
||||||
|
[문제 링크](https://www.acmicpc.net/problem/1253)
|
||||||
|
|
||||||
|
### 성능 요약
|
||||||
|
|
||||||
|
메모리: 40724 KB, 시간: 676 ms
|
||||||
|
|
||||||
|
### 분류
|
||||||
|
|
||||||
|
자료 구조, 정렬, 이분 탐색, 두 포인터
|
||||||
|
|
||||||
|
### 제출 일자
|
||||||
|
|
||||||
|
2026년 3월 30일 16:06:57
|
||||||
|
|
||||||
|
### 문제 설명
|
||||||
|
|
||||||
|
<p>N개의 수 중에서 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있다면 그 수를 “좋다(GOOD)”고 한다.</p>
|
||||||
|
|
||||||
|
<p>N개의 수가 주어지면 그 중에서 좋은 수의 개수는 몇 개인지 출력하라.</p>
|
||||||
|
|
||||||
|
<p>수의 위치가 다르면 값이 같아도 다른 수이다.</p>
|
||||||
|
|
||||||
|
### 입력
|
||||||
|
|
||||||
|
<p>첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 A<sub>i</sub>가 N개 주어진다. (|A<sub>i</sub>| ≤ 1,000,000,000, A<sub>i</sub>는 정수)</p>
|
||||||
|
|
||||||
|
### 출력
|
||||||
|
|
||||||
|
<p>좋은 수의 개수를 첫 번째 줄에 출력한다.</p>
|
||||||
|
|
||||||
38
백준/Gold/1253. 좋다/좋다.py
Normal file
38
백준/Gold/1253. 좋다/좋다.py
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
import sys
|
||||||
|
from collections import defaultdict, deque, Counter
|
||||||
|
from heapq import heappush, heappop, heapify
|
||||||
|
from itertools import permutations, combinations
|
||||||
|
from functools import lru_cache
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
def solve():
|
||||||
|
# 입력 처리
|
||||||
|
n = int(input())
|
||||||
|
arr = list(map(int, input().split()))
|
||||||
|
# 풀이 작성
|
||||||
|
arr.sort()
|
||||||
|
total = 0
|
||||||
|
if(n==1 or n==2):
|
||||||
|
print(total)
|
||||||
|
else:
|
||||||
|
for i in range(n):
|
||||||
|
left = 0
|
||||||
|
right = n-1
|
||||||
|
goal = arr[i]
|
||||||
|
while (left<right):
|
||||||
|
if(arr[left]+arr[right]==goal):
|
||||||
|
if(left!=i and right!=i):
|
||||||
|
total+=1
|
||||||
|
break
|
||||||
|
elif (left==i):
|
||||||
|
left+=1
|
||||||
|
else:
|
||||||
|
right-=1
|
||||||
|
elif(arr[left]+arr[right]>goal):
|
||||||
|
right-=1
|
||||||
|
else:
|
||||||
|
left+=1
|
||||||
|
print(total)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
solve()
|
||||||
Reference in New Issue
Block a user