본문 바로가기

IT 공부/코딩테스트

[프로그래머스 level1] [PCCE 기출문제] 10번 / 데이터 분석 - 파이썬

문제 설명

index 0은 code, index 1은 date, index 2는 maximum, index 3은 remain으로 이루어진 리스트가 여러개로 이루어진 data중

1번째로는 ext에 해당하는 데이터가 (예제1번이라고 한다면 date 즉 index 1) val_ext보다 작으면

없애고

새로 만든 리스트를 sort_by로 정렬해서 return 하라는 문제

 

문제 풀이

1. code, date, maximum, remain의 인덱스를 각각 지정한다.

data_info = {'code':0, 'date': 1, 'maximum': 2, 'remain':3}

2. 1번째로는 ext에 해당하는 데이터가 (예제1번이라고 한다면 date 즉 index 1) val_ext보다 작으면 리스트에서 제외하고 새로운 리스트를 만든다.

new_data = []

...(생략)

i = data_info.get(ext)

 for da in data:
        if da[i] < val_ext:
            new_data.append(da)

3. 새로 만든 리스트를 sort_by를 기준으로 정렬한다.

j = data_info.get(sort_by)

...(생략)

new_data = sorted(new_data, key=lambda new : new[j])
    return new_data

def solution(data, ext, val_ext, sort_by):
    new_data = []
    data_info = {'code':0, 'date': 1, 'maximum': 2, 'remain':3}
    i = data_info.get(ext)
    j = data_info.get(sort_by)
    print(i, j)
        
    #새로운 리스트 new_data에 ext으로 걸러진 데이터 삽입
    for da in data:
        if da[i] < val_ext:
            new_data.append(da)
    
    
    new_data = sorted(new_data, key=lambda new : new[j])
    return new_data

 

나의 삽질

원래 딕셔너리를 사용하지 않고 If문으로 i, j를 만들었었는데, 다른 사람들의 풀이를 보니, 딕셔너리로 풀었는데 

딕셔너리로 풀 생각을 못해서 좀 아쉽다.