[백준] 런타임에러
본문 바로가기

Coding Test

[백준] 런타임에러

런타임에러 원인

  1. 배열 인덱스 범위를 벗어났을 경우
  2. 0으로 나눌 때
  3. 사용하는 라이브러리에서 예외를 발생시켰을 때
  4. 재귀 호출이 너무 길어질 때

 

2798 블랙잭 / Python

추측 에러 원인: 1) 인덱스 에러

더보기
from itertools import combinations
N, M = map(int, input().split())
lst = list(map(int, input().split()))
 
c = list(combinations(lst, 3))
sum_c = list(map(sum, c))
 
diff = list(map(lambda x:x-M, sum_c))
# 음수 중 가장 큰 수
m = -9999
for i in diff:
    if i<=0 and i>m:
        m = i
 
if m != -9999:
    print(sum_c[diff.index(m)])
 
if i<=0 and i>m: 에 안걸려서 diff.index[-9999]가 들어가버림
전부 M보다 커서 양수만 있는 경우가 있을 수 있음
-> if m != -9999: 일떄 출력 -> 틀림
위 코드에서 틀린 이유 못찾음
다른 사람 코드 보니
어차피 sum을 출력하므로 sum을 하고 바로 비교해서 biggest 값 출력함
내 풀이는 리스트로 다 만들어놓고 index로 다시 찾는데 비효율적
 
from itertools import combinations
N, M = map(int, input().split())
lst = list(map(int, input().split()))

biggest_sum = 0
for cards in combinations(lst, 3):
    temp_sum = sum(cards)
    if biggest_sum < temp_sum <= M:
        biggest_sum = temp_sum
print(biggest_sum)

 

 

'Coding Test' 카테고리의 다른 글

[백준] 2110번 공유기 설치 이분 탐색  (0) 2024.05.16
[SQL] 쿼리문 작성 코테 대비  (0) 2024.05.10
2차원 리스트 생성 후 요소 변경  (0) 2023.02.06
[백준] 시간초과  (0) 2023.01.22
[백준] CLASS1  (0) 2023.01.22