코테/BOJ
백준 3273 [두 수의 합] 파이썬
동 캄
2025. 2. 12. 22:53
반응형
https://www.acmicpc.net/problem/3273
간단한 그리디 문제이다.
#백준 3273 두 수의 합
import sys
n=int(sys.stdin.readline())
lst=list(map(int,sys.stdin.readline().split()))
lst.sort()
x=int(sys.stdin.readline())
i=0
j=len(lst)-1
ans=0
while (i<j):
if lst[i]+lst[j]<x:
i+=1
elif lst[i]+lst[j]>x:
j-=1
else:
i+=1
ans+=1
print(ans)
정렬 후, 앞 뒤에서 동시에 진행하며 계산하면 된다.
앞 수 + 뒷 수 > X 이면
뒷 수의 인덱스를 하나 줄인다.
앞 수 + 뒷 수 < X 이면
앞 수의 인덱스를 하나 늘린다.
앞 수 + 뒷 수 == X 이면
앞 수의 인덱스를 하나 늘리고, 정답의 갯수를 하나 증가시킨다.
만약, 같은 수가 있다고 하면 더 복잡해 질거 같은데, 고민을 좀 해봐야겠다.
반응형