반응형
리뷰
브론즈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 |