728x90
반응형
파이썬 실습창을 열 수 있습니다.실습창 열기
과수원에서
과수원을 찾아 온 손님이 주인에게 물었습니다.
"주인께서는 올해 나이가 얼마나 되십니까?”
내 나이 말인가?
저기 오는 3사람의 나이를 곱하면 7000이고,
더하면 내 나이의 꼭 2배가 되지.
저 사람들 나이가 나보다 많은 사람은 없어.”
“아, 예~”
현명한 손님은 오고 있는 3사람의 나이와 주인의 나이를 알았습니다.
당신도 현명합니다.
오고 있는 3사람의 나이와 주인의 나이를 구하여 출력하여 보세요.
1. 문제 분석
문제의 핵심 내용을 다시 생각하여 봅시다.
- 3사람의 나이를 곱하면 7000이다.
- 3사람의 나이를 더하면 주인 나이의 2배이다.
그러므로 3사람의 나이 합은 짝수이며 300이하이다(인간의 최대 나이를 150살로 가정). - 주인의 나이는 3사람 중에서 나이가 가장 많은 사람과 같거나 더 많다.
그리고, 인간의 나이 한계는 150살로 생각합시다.
그러면 3사람의 나이는 각각 1살 이상(0살이 있으면 곱하여 7000이 될 수 없음) 150살 미만이 됩니다.
2. 알고리듬 설계
모든 경우를 조사하는 brute-force algorithm을 사용합시다.
생성과 검정(generate and test)을 반복하는 이 방법은 가장 널리 사용되는 문제 해결 기법(problem-solving technique)이기도 합니다.
3. 코딩하기
바로 코딩하여 보세요.
더보기
eps=150 # 나이 한계, eps는 흔히 한계를 표시(epsilon)
for a in range(1,eps): # 세 사람을 a, b, c로 둠
for b in range(a,eps): # range(a,eps) 답의 중복을 피함(순서 바뀐 나이 발생 않음)
for c in range(b,eps):
s=a+b+c # 3사람의 나이 합은 8번 줄에서도 사용
owner=s//2 # 주인의 나이
c1=a*b*c==7000
c2=(s%2==0) and (s<=300) # 3사람의 나이합은 짝수이고 300이하
c3=owner>=max(a,b,c) # 주인의 나이는 3사람 최대 나이 이상
if c1 and c2 and c3:
print(a,b,c,owner)
'''
답은 5 35 40 40
세 사람의 나이는 5, 35, 40 살
주인의 나이는 40살
print 다음에 break를 사용하지 않은 것은 또 다른 답이 있을 수 있기 때문입니다.
'''
스스로 하셨지요?
성공을 축하합니다.
오늘 끝.
728x90
반응형
'알고리듬' 카테고리의 다른 글
[알고리듬] #64 가족 구성 (1) | 2024.04.20 |
---|---|
[알고리듬] #63 상하이 팔팔 가게 (1) | 2024.04.19 |
[알고리듬] #61 100마리의 닭 (0) | 2024.04.18 |
[알고리듬] #60 노새와 당나귀 (0) | 2024.04.17 |
[알고리듬] #59 버스에 탄 어린이 (0) | 2024.04.17 |