카테고리 없음

[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