카테고리 없음
[PCCE 기출문제] 10번 / 데이터 분석
코딩초보ran
2023. 12. 29. 13:05
11:51 시작/ 12:10 코드/ 12:50 완료
문제 설명
제한사항
입출력 예 및 설명
문제 풀이
def solution(data, ext, val_ext, sort_by):
answer = []
col_dict = {'code':0, 'date':1, 'maximum':2, 'remain':3}
ext_idx = col_dict[ext]
sort_idx = col_dict[sort_by]
sort_dict = {}
for i, d in enumerate(data):
if d[ext_idx] < val_ext:
sort_dict[d[sort_idx]] = i
keylist = sorted(sort_dict)
for key in keylist:
answer.append(data[sort_dict[key]])
return answer
하 진짜 어처구니없게 이 코드를 짜고 런타임에러가 났길래 sort하는 부분이 시간이 오래걸리나 했다. 제한사항에서 보면 data 원소 개수도 최대 500이라 sort가 시간이 그렇게 오래 걸리나? 해서 dict을 list로 만들어서 sort도 해보고, 아예 sort를 안 써서 코드를 짤 수는 없나도 고민해보고 했는데.. 결국... col dict 생성하는 부분에서 maximum 을 maximun.. 이라고.. 오타가 있어서 틀렸던 것이었다.... 으!! 다음부터는 더 꼼꼼히 봐야겠다
채점결과
다른 사람 풀이
def solution(data, ext, val_ext, sort_by):
# 데이터 타입
data_type = {
"code" : 0,
"date" : 1,
"maximum" : 2,
"remain" : 3
}
# data를 ext를 기준으로 val_ext보다 작은 것만 선발
filtered_data = [d for d in data if d[data_type[ext]] < val_ext]
# filtered_data를 sort_by를 기준으로 다시 오름차순 정렬
sorted_filtered_data = sorted(filtered_data, key=lambda x: x[data_type[sort_by]])
return sorted_filtered_data
# 출처: https://1ets-just-do-it.tistory.com/140 [파이썬은 신이야🔥🔥🔥:티스토리]
아이디어는 비슷한데 코드를 아주 간결하게 되어있다.
List Comprehension을 아주 잘 활용하시는 분 같다. 나도 연습을 해서 다음 코테에서 써먹어봐야겠다!
문제 출처 : 프로그래머스/ 데이터 분석/ Lv1 / python