자료구조, 알고리즘 문제 풀어보기(고대 유물 감정하기)
16 Jul 2025 | Data Structure개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
문제 3: 고대 유물 감정하기
테마/상황:
당신은 박물관의 유물 감정사입니다. 새로 발굴된 유물 목록이 딕셔너리 리스트 형태로 도착했습니다. 각 유물은 {‘이름’: ‘…’, ‘가치’: …, ‘국가’: ‘…’} 형태로 되어있습니다. 특정 국가의 유물만 골라내고, 그 가치의 평균을 계산해야 합니다.
미션:
유물 데이터(리스트)와 국가 이름(문자열)을 입력받아, 해당 국가의 유물들의 평균 가치를 계산하는 함수 evaluate_artifacts를 작성하세요.
규칙:
- 주어진 국가의 유물이 하나도 없다면, 0을 반환해야 합니다.
- 평균 가치는 소수점 이하는 버리고 정수로 반환합니다.
예시:
- 입력:
artifacts = [
{'이름': '청동검', '가치': 500, '국가': '한국'},
{'이름': '파라오 마스크', '가치': 2500, '국가': '이집트'},
{'이름': '직지심체요절', '가치': 3000, '국가': '한국'},
{'이름': '로제타석', '가치': 2000, '국가': '이집트'},
{'이름': '원반 던지는 사람', '가치': 1500, '국가': '그리스'}
]
country = '한국'
- 출력:
1750
- 한국 유물은 ‘청동검’(500)과 ‘직지심체요절’(3000)입니다.
- 가치의 합은 3500이고, 개수는 2개입니다.
- 평균은 3500 / 2 = 1750 입니다.
<1. 내가 푼 풀이>
def evaluate_artifacts(artifacts, country):
country_value = []
for artifact in artifacts:
if artifact['국가'] == country:
country_value.append(artifact['가치'])
if country_value:
return int(sum(country_value) / len(country_value))
else:
return 0
evaluate_artifacts(artifacts, '한국')
<2. 교육 내 답변>
def evl_art(artifacts, country):
country_value = []
for artifact in artifacts:
if artifact['국가'] == country:
country_value.append(artifact["가치"])
#평균
avg_cont = sum(country_value)/len(country_value)
return int(avg_cont)