
- 재료는 각 고유번호를 가지고 있다 -> 중복 값이 없다
- 두개의 재료를 합쳤을 때 m이 될 경우 갑옷이 만들어지므로 각 값은 하나가 value면 나머지 하나는 m - value이다.
- 이 코드에서는 리스트 전체를 돌리면서 하나씩 검사하므로 value일때도 count가 늘어나고 m - value일때도 count가 늘어난다. 즉 한번 더 세었단 뜻이므로 출력할때에는 나누기 2 해줘야 한다.(무조건 count는 짝수)
- 메모리 : 31880 KB
- 시간 : 2276 ms
n = int(input())
m = int(input())
lst = list(map(int, input().split()))
count = 0
for value in lst:
if value >= m:
continue
if m-value in lst:
count += 1
print(count//2)
- for value in lst 의 코드처럼 리스트를 사용할 경우 리스트 값을 바꾸거나 삭제하는 등의 수정작업은 하지 않는 편이 좋다. -> 삭제했더니 어떤 값은 건너뛰고 반복문이 돌아간다.
- 이 코드는 런타임에러(ValueError)가 나왔는데 index()를 잘못 사용할 경우 이런 오류가 발생한다고 한다.
- 런타임에러 중 ValueError는 데이터의 타입이 맞지 않아 발생하는 에러이다.
n = int(input())
m = int(input())
lst = list(map(int, input().split()))
count = 0
for value in lst: # -> 이런 방식으로 for문을 사용할 경우
if value >= m:
continue
if m-value in lst:
count += 1
del lst[lst.index(value)] # -> 리스트 안의 값을 수정하면 오류 발생할 확률 높음
del lst[lst.index(m-value)] # -> index() 함수와 del 함수 사용으로 인한 오류
print(count)