https://www.acmicpc.net/problem/1940
1. 난이도 실버 4
2. 문제 해결 방법
투 포인터를 이용하면 된다. 데이터의 크기가 작기 때문에 sort를 이용해 정렬한 후, start + end 의 값이 m과 같을 경우 카운팅해줬다.
3. 내가 작성한 코드
n = int(input()) #재료의 개수
m = int(input()) #번호 합
material = list(map(int, input().split()))
material.sort()
cnt = 0
start = 0 #처음부터 시작
end = n-1 #끝부터 시작
while start < end: #가운데서 만난 이후엔 break
if material[start] + material[end] == m: #start+end가 m과 같으면 카운팅, start, end이동
cnt+=1
start+=1
end-=1
elif material[start] + material[end] < m: #작으면 start 를 이동
start+=1
else: #크면 end를 이동
end-=1
print(cnt)
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 1005번 ACM Craft(python) (0) | 2023.03.04 |
---|---|
[백준] 21921번 블로그(python) (0) | 2023.03.03 |
[백준] 2018 수들의 합(python) (0) | 2023.03.03 |
[백준] 14567번 선수과목(python) (0) | 2023.03.03 |
[백준] 1197번 최소 스패닝 트리(python) (0) | 2023.03.02 |
댓글