문제
https://www.acmicpc.net/problem/2309
내가 제출한 답
a = [int(input()) for _ in range(9)]
sumList = sum(a)
for i in range(8):
for j in range(i+1, 9):
if sumList - (a[i] + a[j]) == 100:
one = a[i]
two = a[j]
a.remove(one)
a.remove(two)
a.sort()
for b in a:
print(b)
if len(a)<=8:
break
if len(a)<=8:
break
리스트에서 값이 제거되면 루프를 바로 빠져나오게 하였다.
왜냐하면 값을 이미 구했다면 나머지 루프에서 값을 만족하는지 계산할 이유가 없어서이다.
다른 사람의 답
a = [int(input()) for _ in range(9)]
sumList = sum(a)
for i in range(8):
for j in range(i+1, 9):
if sumList - (a[i] + a[j]) == 100:
one = a[i]
two = a[j]
a.remove(one)
a.remove(two)
a.sort()
for b in a:
print(b)
if len(a)<=8:
break
if len(a)<=8:
break
맨 처음 시도했던 답
a = [int(input()) for _ in range(9)]
sumList = sum(a)
for i in range(8):
for j in range(i+1, 9):
if sumList - (a[i] + a[j]) == 100:
a.remove(a[i])
a.remove(a[j])
a.sort()
for b in a:
print(b)
if len(a)<=8:
break
if len(a)<=8:
break
위 코드로 테스트 했었는데 자꾸 오답이 나와서 알고리즘상으로는 문제가 없는데 어디에서 잘못된 연산을 하고있는건지
한참 찾아보았다.
결국에는 a[i], a[j]가 문제였다.
a.remove(a[i]) 구문을 수행하고 다음 구문을 실행할 때 a[j]가 인덱스 한칸씩 없어졌기 때문에 오답이 제출 된 것.
제거하고 싶은 값을 인덱스로 할당해서 제거하는 것이 아닌 변수에 임시로 할당해서 제거하는 방식으로 제출함.
'Problem Solving > CT-Python' 카테고리의 다른 글
[백준/브루트포스] 2635: 수 이어가기 - 파이썬 (0) | 2022.04.22 |
---|---|
[백준/구현] 2669: 직사각형 네개의 합집합의 면적 구하기 - 파이썬 (0) | 2022.04.22 |
[백준/프루트포스] 7568: 덩치 - 파이썬 (0) | 2022.03.25 |
[백준/그리디] 1715: 카드 정렬하기 - 파이썬 (0) | 2022.03.16 |
[백준/브루트포스] 4673: 셀프넘버 - 파이썬 (0) | 2022.03.16 |