<aside>
💬 lv0
, 정렬
일주일 동안의 최고 기온이 기록된 데이터가 주어집니다. 이 데이터에서 가장 높은 온도를 기록한 상위 3일을 찾아 'YY-MM-DD: 온도' 형식으로 반환하는 코드를 작성해주세요. 데이터는 'YYYY-MM-DD' 형식의 날짜와 해당 날짜의 최고 온도(섭씨)로 구성됩니다.
입력 (기온 데이터) | 출력 (상위 3일의 기온) |
---|---|
{'2024-01-01': 15, '2024-01-02': 17, '2024-01-03': 16, '2024-01-04': 20, '2024-01-05': 19, '2024-01-06': 21, '2024-01-07': 18} | ['24-01-06: 21', '24-01-04: 20', '24-01-05: 19'] |
주어진 일주일 동안의 최고 기온 데이터에서 가장 높은 온도를 기록한 상위 3일을 'YY-MM-DD: 온도' 형식으로 반환합니다. 예를 들어, 가장 높은 기온을 기록한 날은 '2024-01-06'로 21도였으며, 그 다음은 '2024-01-04'의 20도, '2024-01-05'의 19도입니다.
</aside>
def solution(temperature_data): **#1 함수 정의**
temp_list = [(temp, date) for date, temp in temperature_data.items()] **#2 형식 변환**
temp_list.sort(key=lambda x: (-x[0], x[1])) **#3 정렬**
top_three = temp_list[:3] **#4 요구사항 반영**
return [f"{date[2:]}: {temp}" for temp, date in top_three] **#5 결과 반환**
함수 정의
코드의 첫 부분에서 solution
이라는 함수를 정의합니다. 이 함수는 하나의 인자 temperature_data
를 받습니다. temperature_data
는 날짜와 최고 온도로 구성된 딕셔너리입니다.
형식 변환
온도 데이터를 (온도, 날짜) 형식의 튜플 리스트로 변환합니다.
정렬
두 가지 기준으로 정렬됩니다. 첫 번째 기준은 온도(x[0]
)로, 높은 온도부터 낮은 온도 순으로 정렬됩니다. 이를 위해 -x[0]
를 사용하여 온도 값을 음수로 변환합니다. 두 번째 기준은 날짜(x[1]
)로, 오름차순으로 정렬됩니다. 온도가 같은 경우 날짜를 기준으로 정렬한다는 의미입니다.
요구사항 반영
정렬된 리스트에서 가장 앞에 있는 3개의 요소를 슬라이싱하여 top_three
에 저장합니다. 이는 가장 높은 온도를 가진 3개의 날짜를 선택하는 것과 같습니다.
결과 반환
top_three
에 저장된 각 날짜와 온도를 'YY-MM-DD: 온도' 형식으로 변환합니다. 이때, 날짜의 연도 부분은 처음 두 글자를 제외하고 변환합니다.
튜플 정렬
기본 형태: sorted(data, key=lambda x: (x[0], x[1]))
개념: 튜플의 첫 번째 요소를 기준으로 정렬되며, 첫 번째 요소가 같은 경우 두 번째 요소를 비교하고, 계속해서 다음 요소로 비교하게 됩니다.
# 튜플 정렬 사용
data = [(1, 'b'), (2, 'a'), (1, 'a')]
sorted_data = sorted(data, key=lambda x: (x[0], x[1]), reverse=True)
# 결과: [(2, 'a'), (1, 'b'), (1, 'a')]
def solution(data): **#1 함수 정의**
if 7 <= len(data) <= 30: **#2 조건문**
sorted_tmp = sorted(data.items(), key = lambda x:x[1], reverse=True) **#3 정렬**
top3_list = [f'{day}: {tmp}' for day, tmp in sorted_tmp][:3] **#4 문자열 변환**
**#5 문자열 슬라이싱**
changed_str = []
for x in top3_list:
x = x[2:]
changed_str.append(x)
return changed_str **#6 결과 반환**
else:
msg ='잘못 입력하셨습니다. 기온 데이터를 최소 7개에서 최대 30개까지 입력해주세요.'
return msg
함수 정의
코드의 첫 부분에서 solution
이라는 함수를 정의합니다. 이 함수는 하나의 인자 data
를 받습니다. data
는 날짜와 최고 온도로 구성된 딕셔너리입니다.
조건문
입력받은 data
의 길이가 7 이상 30 이하인지 확인합니다. 조건에 맞지 않으면 에러 메세지를 반환합니다.
정렬
data
의 아이템을 value
값(최고 온도) 기준으로 내림차순 정렬합니다.