홍우진의 개발 일기장

[백준] 1940번: 주몽/ 파이썬 본문

알고리즘/백준

[백준] 1940번: 주몽/ 파이썬

홍우진 2022. 8. 21. 23:26
728x90
반응형

문제 링크


https://www.acmicpc.net/problem/1940

 

1940번: 주몽

첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고

www.acmicpc.net

 

풀이 코드


n = int(input())
m = int(input())
nums = list(map(int,input().split()))

nums.sort()
left, right = 0, len(nums) - 1
count = 0

while left < right:
    sum_num = nums[left] + nums[right]
    if sum_num < m:
        left += 1
    elif sum_num > m:
        right -= 1
    else:
        count += 1
        left += 1
        right -= 1

print(count)

코드 해석


투 포인터 문제이다.

왼쪽 끝과 오른쪽 끝에 포인터를 둔 뒤,

두 포인터 위치의 값을 합하고

만약 합한 값이 원하는 값보다 작다면 왼쪽 포인터를 +1,

크다면 오른쪽 포인터를 -1 하여 원하는 값을 찾아나간다.

만약 원하는 값과 합한 값이 일치 할 시 카운트를 +1 하고 왼 +1, 오 -1을 한다.

728x90
반응형
Comments