Notice
Recent Posts
Recent Comments
Link
HwangHub
[백준/python] #2309 일곱 난쟁이 본문
2309번: 일곱 난쟁이
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
www.acmicpc.net
문제 풀이
주어진 배열로부터 조합을 이용하여 7개를 뽑고, 그 합이 100인 경우를 출력하면 되는 문제이다.
첫 번째 시도
from itertools import combinations as cb
arr = list()
for _ in range(9):
arr.append(int(input()))
for case in cb(arr, 7):
# print(sum(case))
if sum(case) == 100:
ans = sorted(case)
print('\n'.join(map(str, ans)))
당연히 한 번에 성공할 줄 알고 제출했는데, 단번에 틀렸다고 한다. 반례를 알아보려고 질문 게시판을 바로 가봤는데, '가능한 경우가 여러 개일 경우에는 한 번만 출력하면 된다'는 조건을 고려하지 않았던 것 같다. 따라서 break 문을 추가하였더니 정답을 얻어낼 수 있었다.
두 번째 시도
from itertools import combinations as cb
arr = list()
for _ in range(9):
arr.append(int(input()))
for case in cb(arr, 7):
# print(sum(case))
if sum(case) == 100:
ans = sorted(case)
print('\n'.join(map(str, ans)))
break # edited
느낀 점
우선, 틀렸다고 바로 질문 게시판을 가는 습관부터 고쳐야겠다. 코딩테스트를 볼 때는 질문 게시판 따위가 있을 리 없기 때문이다. 스스로 짠 논리에 어떤 오류가 있는지 검증하는 습관을 길러야겠다.
또한 조건을 꼼꼼히 따져봐야겠다는 생각이 든다. 이렇게 틀렸던 적이 많았던 것 같은데, 아직 이런 사소한 것도 개선하지 못했던 것에 스스로 아쉬움을 느꼈다.
'workspace > 알고리즘' 카테고리의 다른 글
[백준 / python] #12789: 도키도키 간식드리미 (0) | 2023.02.12 |
---|---|
[백준 / python] #11880 개미 (0) | 2023.02.12 |
[백준 / python] # 15652 N과 M(4) (0) | 2023.02.08 |
[백준 / Python] #1718. 암호 (0) | 2023.02.07 |
[백준 / python] #15820 맞았는데 왜 틀리죠? (0) | 2023.02.05 |
Comments