
리뷰

브론즈1 문제 치고는 생각보다 어려웠다. 브루트포스 알고리즘 문제를 많이 연습해야 겠다.
문제 풀이
입력될 난쟁이의 수는 9명으로 고정, 난쟁이 7명의 키를 더했을때 정확히 100이 일치한다면 해당 값을 리턴해주면 된다.
즉 9명의 난쟁이 키의 합에서 겹치지 않는 두 난쟁이를 선택하여 해당 난쟁이들의 키를 빼주면 된다.
2중 for문을 사용했기에 위 조건을 만족할 경우 해당 난쟁이를 리스트에서 제거해 주고 break를 통해 for문을 빠져나왔다.
주의 : 여기서 실수한 점은 lst[i]와 lst[j]의 값을 a, b와 같은 변수로 초기화 해준 후 remove를 해주어야 한다. 그렇지 않고 lst.remove(lst[i])와 같이 실행했을 경우 lst.remove(lst[j])는 엉뚱한 난쟁이를 리스트에서 제거할 것이다.
추천 반례
없음
정답 코드
def q2309():
# 백준 2309번 일곱 난쟁이 파이썬
lst = [int(input()) for _ in range(9)]
s = sum(lst)
for i in range(9):
flag = False
for j in range(i + 1, 9):
if s - (lst[i] + lst[j]) == 100:
a, b = lst[i], lst[j]
lst.remove(a)
lst.remove(b)
flag = True
break
if flag:
break
print(*sorted(lst))
q2309()
728x90
'알고리즘 공부 > 파이썬(Python)' 카테고리의 다른 글
백준 8320번 직사각형을 만드는 방법 파이썬 (0) | 2024.06.25 |
---|---|
백준 10163번 색종이 파이썬 (0) | 2024.06.24 |
백준 2567번 색종이 - 2 파이썬 (0) | 2024.06.24 |
백준 10825번 국영수 파이썬 (0) | 2024.06.24 |
백준 16496번 큰 수 만들기 파이썬 (0) | 2024.06.24 |