본문 바로가기
🔅코딩테스트 공부🔅/❗백준

[백준] 1940번 주몽(python)

by 윤무무 2023. 3. 3.

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

 

1940번: 주몽

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

www.acmicpc.net

 

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)

댓글