링크 : https://www.acmicpc.net/problem/1940
1940번: 주몽
첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고
www.acmicpc.net
- 문제
- 소요시간: 4분 14초
- 설계하기(접근방법)
1. 입력받기
고유번호 개수
타겟 숫자
고유번호 리스트를 입력받는다
2. 구현하기
고유하다는 문제의 조건에서 해시함수
즉 딕셔너리를 떠올릴 수 있다
15000개의 데이터를 전부 하나씩 찾는다면
시간초과에 걸릴 것이니
딕셔너리에 15000개의 데이터를 넣고
타겟 넘버인 m 에 고유번호 숫자를 뺀 값
ex) m - 7 = 2
2 가 딕셔너리에 있는지 검사한다
있다면 cnt += 1을 해준다
3. 출력하기
중복되어 카운팅되었을테니
cnt // 2를 해주어 출력한다
- 코드(출력)
n = int(input())
m = int(input())
ingredient = {}
cnt = 0
num = list(map(int, input().split()))
for i in num:
ingredient[i] = 1
for i in num:
if (m - i) in ingredient:
cnt += 1
print(cnt//2)
- 얻어갈 부분
1. 알고보니 투포인터 문제였다
'알고리즘(백준) > 투포인터' 카테고리의 다른 글
[알고리즘/투 포인터] 2467번 : 용액 - python (0) | 2024.10.11 |
---|---|
[알고리즘/투 포인터] 2470번 : 두 용액 - python (0) | 2024.02.28 |
[알고리즘/투 포인터] 1806번 : 부분 합 - python (0) | 2024.02.28 |
[알고리즘/투 포인터] 2230번 : 수 고르기 - python (1) | 2024.02.28 |