Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

김찬양의 개발일지

2일차. [PCCE 기출문제] 10번 / 데이터 분석 본문

코딩테스트/Programmers Level 1

2일차. [PCCE 기출문제] 10번 / 데이터 분석

자유로운영혼이다냥 2023. 11. 25. 21:04

https://school.programmers.co.kr/learn/courses/30/lessons/250121

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제

AI 엔지니어인 현식이는 데이터를 분석하는 작업을 진행하고 있습니다. 데이터는 ["코드 번호(code)", "제조일(date)", "최대 수량(maximum)", "현재 수량(remain)"]으로 구성되어 있으며 현식이는 이 데이터들 중 조건을 만족하는 데이터만 뽑아서 정렬하려 합니다.

정렬한 데이터들이 담긴 이차원 정수 리스트 data와 어떤 정보를 기준으로 데이터를 뽑아낼지를 의미하는 문자열 ext, 뽑아낼 정보의 기준값을 나타내는 정수 val_ext, 정보를 정렬할 기준이 되는 문자열 sort_by가 주어집니다.

data에서 ext 값이 val_ext보다 작은 데이터만 뽑은 후, sort_by에 해당하는 값을 기준으로 오름차순으로 정렬하여 return 하도록 solution 함수를 완성해 주세요. 단, 조건을 만족하는 데이터는 항상 한 개 이상 존재합니다.

풀이과정

string값으로 주어지는 ext와 sort_by의 인덱스를 쉽게 찾기 위해

title = ["code", "date", "maximum", "remain"]

의 리스트를 만들어서 .index로 찾아내도록 했다.

data에서 ext값이 val_ext값보다 작은 데이터만 뽑는

filter(lambda x:x[title.index(ext)]<val_ext, data)

를 사용했고, 그걸 sort_by를 기준으로 섞기 위해

sorted(filter, key=lambda x:x[title.index(sort_by)])

를 사용했다.

정답

def solution(data, ext, val_ext, sort_by):
    title = ["code", "date", "maximum", "remain"]
    return sorted(filter(lambda x:x[title.index(ext)]<val_ext, data), key=lambda x:x[title.index(sort_by)])