Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 2309번- '일곱 난쟁이' (PYTHON 풀이) 본문
문제:

아홉개의 입력 중 7개 수의 합이 100이 되는 수를 출력하면 되는 문제이다.
풀이:
li = []
for i in range(9):
a = int(input())
li.append(a)
re = sorted(li)
S = sum(re)
tar = S - 100
found = False
for j in range(9):
for q in range(j+1, 9):
if re[j] + re[q] == tar:
a = re[j]
b = re[q]
found = True
break
if found:
break
re.remove(a)
re.remove(b)
for i in re:
print(i)
9개의 수를 리스트에 입력받고 sorted 함수를 통해 오름차순으로 정렬한다. 그 다음 리스트 수를 전부 더해서 100에서 뺀다.
이렇게 하는 이유는 수를 더하면서 100을 맞추는 것보다 100에서 뺀 남은 수에 해당하는 수를 지우는 게 더 쉽기 때문이다.
그 다음 조건을 확인할 때 사용하기 위한 found를 선언해주고, 이중 for문을 돌려서 리스트의 첫번째 값과 나머지 수를 하나씩 전부 더해본다. 이 값이 100에선 뺀 차이인 tar와 같다면 이 둘을 빼주면 되기 때문에 이에 해당하는 값을 a,b에 저장하고 found를 True로 바꿔준 뒤 break를 통해 안쪽 for문을 탈출한다. 그 다음 바깥쪽 for문도 탈출하기 위해서 if문을 추가로 또 넣어서 tar와 같으면 found가 True로 바뀌니까 해당 조건도 충족이 되어 모든 반복문을 빠져나오게 된다.
이후 삭제하면 되는 a,b 변수에 해당하는 값을 remove 함수를 활용해 지워주고 최종적으로 7개의 수만(합이 100인) 남은 re 리스트를 출력 형식에 맞춰서 출력해준다.
처음에는 100에서 뺴는 생각보단 더해서 100을 만드는 수에 집착하다보니 코드가 더욱 길어지고 복잡해졌다. 그래서 생각을 좀 달리해서 100에서 빼서 이중 for문으로 만드니까 좀 더 쉽게 만들어졌다.
'CODING 💻' 카테고리의 다른 글
| 백준 1924번- '2007년' (PYTHON 풀이) (0) | 2025.11.20 |
|---|---|
| 백준 2442번- '별 찍기 - 5' (PYTHON 풀이) (0) | 2025.11.19 |
| 백준 4153번- '직각삼각형' (PYTHON 풀이) (0) | 2025.11.17 |
| 백준 2775번- '부녀회장이 될테야' (PYTHON 풀이) (0) | 2025.11.16 |
| 백준 2920번- '음계' (PYTHON 풀이) (0) | 2025.11.15 |
