1. 문제분석 및 접근법
- n의 범위가 10^4이므로, O(n^2)은 불가능, O(nlogn)은 가능
->정렬 알고리즘 사용가능- 1개의 갑옷은 2개의 재료만을 이용해 제작 가능
- 투포인터 를 이용하되, start와 end를 같이 증가시키는 방식으로 접근
- 입력받은 리스트 정렬
- start,end 번호를 0과 n으로 설정
- m보다 작으면 start를 이동, 크면 end를 이동
- start+ end가 m과 같으면 둘다 이동, 카운트 증가
2. 슈도코드
n입력받기
m입력받기
nums 리스트로 입력받기
nums 정렬
start = 0
end = n-1(인덱스 번호로 해야되니까)
cnt 변수 생성
while start가 end보다 작으면:
if 2개 합 > m:
end -= 1
elif 2개 합 < m:
start += 1
else
cnt += 1
start += 1
end -= 1
cnt 출력
3. 코드 구현
import sys
input = sys.stdin.readline
n = int(input())
m = int(input())
nums = list(map(int, input().split()))
nums.sort()
start = 0
end = n-1
cnt = 0
while start < end:
if nums[start] + nums[end] > m:
end -= 1
elif nums[start] + nums[end] < m:
start += 1
else:
cnt += 1
start += 1
end -= 1
print(cnt)