본문 바로가기
알고리즘/프로그래머스

프로그래머스 Lv1 [PCCE 기출문제] 10번 / 데이터 분석 (python)

by 개발하는 호랑이 2024. 2. 1.

[PCCE 기출문제] 10번 / 데이터 분석

 

풀이

문제를 풀었는데 푼 방식은 맞았지만, ext까지 고려해야하는 것을 잊어서, 2번인가 완전실패했다. 왜 안되지 하고 다시 읽었더니 ext를 사용해야하는 코드를 작성안했다.

아래처럼 풀었다.
1. data를 for문을 돌려서 그 안에 있는 값들 중 ext의 val_ext에 해당되는 것들만 추출해서 tmp_data에 입력했다.
1-1. 이 때, 각 ext가 다르므로 if문을 작성하여 걸러주는 작업을 했다. 만약 더 조건이 길어졌다면 if가 아닌 for문을 사용했을 수도 있을 듯 하다.
2. sorted()를 이용해서 tmp_data를 sort_by에 따라 정렬하기 위해 sorted(, key=lambda x: x[])를 사용했다. 여기서도 sort_by의 종류가 4가지가 있으므로 if문을 사용해서 각기 다르게 만들어주었다. 이것 또한 길어졌다면 for문을 이용했을 듯 하다.
3. sortwhat()으로 정렬된 값을 return한다.

# data = [["코드 번호(code)", "제조일(date)", "최대 수량(maximum)", "현재 수량(remain)"]]
def sortwhat(Data, V):
    if V == 'code':
        return sorted(Data, key=lambda x : x[0])
    elif V == 'date':
        return sorted(Data, key=lambda x : x[1])
    elif V == 'maximum':
        return sorted(Data, key=lambda x : x[2])
    elif V == 'remain':
        return sorted(Data, key=lambda x : x[3])

def solution(data, ext, val_ext, sort_by):
    N = len(data)
    tmp_data = []
    for i in range(N):
        if ext == 'code' and data[i][0] < val_ext:
            tmp_data.append(data[i])
        elif ext == 'date' and data[i][1] < val_ext:
            tmp_data.append(data[i])
        elif ext == 'maximum' and data[i][2] < val_ext:
            tmp_data.append(data[i])
        elif ext == 'remain' and data[i][3] < val_ext:
            tmp_data.append(data[i])
    return sortwhat(tmp_data, sort_by)

다른 사람 풀이

by라는 변수를 생성하고 이용해 index()를 이용한 방법으로 내가 생각했던 for를 쓰겠다는 방법을 대체했다.
또 한 정렬을 할 때도, 컬럼명과 인덱스가 같게 배치함으로 by.index(sort_by)로 내가 한 풀이처럼 함수를 더 만들지 않고 바로 풀어냈다.
깔끔한 풀이다.
아래 방법처럼 바로 사용할 수 있는 개발자가 되어야지.

def solution(data, ext, val_ext, sort_by):
    answer = []
    by = [ "code", "date", "maximum", "remain" ]

    for item in data:
        if item[by.index(ext)] < val_ext:
            answer.append(item)

    return sorted(answer, key=lambda x: x[by.index(sort_by)])

아니 여기도 엄준식이... 당황스럽다;;;

def solution(엄준식, 준, 식, 준식):
    어떻게사람이름이 = ["code","date","maximum","remain"]
    엄준식 = [엄 for 엄 in 엄준식 if 엄[어떻게사람이름이.index(준)]<식]
    엄준식.sort(key=lambda 엄: 엄[어떻게사람이름이.index(준식)])
    return 엄준식