rueki

BOJ 1940. 주몽 (투 포인터) 본문

python

BOJ 1940. 주몽 (투 포인터)

륵기 2022. 10. 4. 01:34
728x90
반응형

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

 

1940번: 주몽

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

www.acmicpc.net

 

투포인터를 사용하기 위해서 중요한 전제 조건이 있는데 이는 데이터들이 정렬되어 있다는 조건이다.

이번 문제에서는 포인터를 시작과 끝에 두고 두 포인터가 서로 겹쳐지나가기 전까지만 반복문을 수행하게 된다.

 

예제를 정렬하면 1, 2, 3 ,4, 5, 7이 된다.

1 + 7은 8이라 9보다 작기 때문에 숫자를 높은 것을 더해야 하기 때문에 앞 포인터를 증가시키고

만약 3+7의 경우에는 9로 낮춰야하기 때문에 뒤 포인터를 감소시켜야 한다.

 

n = int(input())
total = int(input())
num_list = list(map(int, input().split()))


# 정렬
num_list.sort()

s = 0
e = n - 1
cnt = 0

while s<e:
    
    hap = num_list[s] + num_list[e]
    
    if hap > total:
        e -= 1
    elif hap < total:
        s += 1
    else:
        cnt += 1
        s += 1
        e -= 1
        
print(cnt)
728x90
반응형

'python' 카테고리의 다른 글

BOJ 2164. 카드2  (0) 2022.10.06
BOJ 17298. 오큰수 (Stack)  (0) 2022.10.05
BOJ 2018. 수들의 합 5 (투 포인터)  (1) 2022.10.04
BOJ 3190. 뱀 (시뮬레이션)  (1) 2022.10.03
BOJ 1251. 단어나누기(구현, Greedy)  (0) 2022.10.03
Comments