동캄의 코딩도장

백준 3273 [두 수의 합] 파이썬 본문

코테/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 이면

앞 수의 인덱스를 하나 늘리고, 정답의 갯수를 하나 증가시킨다.

 

만약, 같은 수가 있다고 하면 더 복잡해 질거 같은데, 고민을 좀 해봐야겠다.

반응형