Skip to content

Latest commit

 

History

History
54 lines (43 loc) · 1.93 KB

File metadata and controls

54 lines (43 loc) · 1.93 KB

백준 1940번 주몽

1940


코드 설명

  • 재료는 각 고유번호를 가지고 있다 -> 중복 값이 없다
  • 두개의 재료를 합쳤을 때 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)