일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다독
- 알고리즘공부
- 투자
- 재테크
- 경제
- 채권
- 지혜를가진흑곰
- 프로그래머스 알고리즘 공부
- 자바
- 백준알고리즘
- 돈
- 자바스크립트
- 책알남
- 알고리즘 공부
- C++
- C
- 성분
- algorithmTest
- 책을알려주는남자
- 프로그래밍언어
- JavaScript
- 주식
- 서평
- 화장품
- 독후감
- algorithmtraining
- Java
- algorithmStudy
- 알고리즘트레이닝
- 독서
- Today
- Total
탁월함은 어떻게 나오는가?
[Algorithm] 데이터 분석 ( Programmers > PCCE 기출문제 10번 / Python ) 본문
[Algorithm] 데이터 분석 ( Programmers > PCCE 기출문제 10번 / Python )
Snow-ball 2024. 2. 7. 21:25문제 설명
AI 엔지니어인 현식이는 데이터를 분석하는 작업을 진행하고 있습니다. 데이터는 ["코드 번호(code)", "제조일(date)", "최대 수량(maximum)", "현재 수량(remain)"]으로 구성되어 있으며 현식이는 이 데이터들 중 조건을 만족하는 데이터만 뽑아서 정렬하려 합니다.
예를 들어 다음과 같이 데이터가 주어진다면
이 데이터는 다음 표처럼 나타낼 수 있습니다.
주어진 데이터 중 "제조일이 20300501 이전인 물건들을 현재 수량이 적은 순서"로 정렬해야 한다면 조건에 맞게 가공된 데이터는 다음과 같습니다.
정렬한 데이터들이 담긴 이차원 정수 리스트 data 와 어떤 정보를 기준으로 데이터를 뽑아낼지를 의미하는 문자열 ext, 뽑아낼 정보의 기준값을 나타내는 정수 val_ext, 정보를 정렬할 기준이 되는 문자열 sort_by 가 주어집니다.
data 에서 ext 값이 val_ext 보다 작은 데이터만 뽑은 후, sort_by 에 해당하는 값을 기준으로 오름차순으로 정렬하여 return 하도록 solution 함수를 완성해주세요. 단, 조건을 만족하는 데이터는 항상 한 개 이상 존재합니다.
제한사항
입출력 예
입출력 예 설명
입출력 예 #1
- 본문의 내용과 동일합니다.
문제 풀이
이번 "데이터 분석"의 문제를 풀기위해 우선 ext에 해당하는 값이 몇번인지 알 필요가 있었다.
이유는 ext 자리의 값과 val_ext값을 비교해서 조건에 부합하는 요소들만 새로운 배열을 구성해야했기 때문이다.
sorted 함수안의 첫번째 파라미터 자리에 있는 배열은 결국 data의 배열을 순회하면서 if 조건에 부합하는 요소들로만 구성된 배열을 만드는 작업이고, 뒤에 lambda쪽은 sort_by를 기준으로 오름차순하는 기준을 사용한 것이다.
문제내에서는 모든 문제는 1개이상의 조건에 부합한다고 했기때문에 없을 때의 예외처리는 제외하였다.
python:
1
2
3
4
|
def solution(data, ext, val_ext, sort_by):
ext_pivot = {'code': 0, 'date': 1, 'maximum': 2, 'remain': 3}
return sorted([el for el in data if el[ext_pivot[ext]] < val_ext], key=lambda x:x[ext_pivot[sort_by]])
|
cs |
https://school.programmers.co.kr/learn/courses/30/lessons/250121