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

2024. 12. 17. 21:39·CODING_TEST

※ 문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

※ 문제 설명

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

예를 들어 다음과 같이 데이터가 주어진다면

data = [[1, 20300104, 100, 80], [2, 20300804, 847, 37], [3, 20300401, 10, 8]]
이 데이터는 다음 표처럼 나타낼 수 있습니다.

code  date  maximum  remain
1 20300104  100  80
2 20300804  847  37
3 20300401  10  8


주어진 데이터 중 "제조일이 20300501 이전인 물건들을 현재 수량이 적은 순서"로 정렬해야 한다면 조건에 맞게 가공된 데이터는 다음과 같습니다.

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

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


제한사항

  •  
  • 1 ≤ data의 길이 ≤ 500
    • data[i]의 원소는 [코드 번호(code), 제조일(date), 최대 수량(maximum), 현재 수량(remain)] 형태입니다.
    • 1 ≤ 코드 번호≤ 100,000
    • 20000101 ≤ 제조일≤ 29991231
    • data[i][1]은 yyyymmdd 형태의 값을 가지며, 올바른 날짜만 주어집니다. (yyyy : 연도, mm : 월, dd : 일)
    • 1 ≤ 최대 수량≤ 10,000
    • 1 ≤ 현재 수량≤ 최대 수량
  • ext와 sort_by의 값은 다음 중 한 가지를 가집니다.
    • "code", "date", "maximum", "remain"
    • 순서대로 코드 번호, 제조일, 최대 수량, 현재 수량을 의미합니다.
  • val_ext는 ext에 따라 올바른 범위의 숫자로 주어집니다.
  • 정렬 기준에 해당하는 값이 서로 같은 경우는 없습니다.

입출력 예

data ext val_ext sort_by result
[[1, 20300104, 100, 80], [2, 20300804, 847, 37], [3, 20300401, 10, 8]] "date" 20300501 "remain" [[3,20300401,10,8],[1,20300104,100,80]]

 


입출력 예 설명

입출력 예 #1 


본문의 내용과 동일합니다.

※ 나의 풀이

  • ext에서 나오는 카테고리를 ext_cat 리스트에 저장 -> index()를 활용
  • data에서 하나의 행인 row를 loop를 통해 읽기
  • ext_cat.index()를 활용하여 ext_idx를 얻음
  • row[ext_idx]의 값이 val_ext 보다 작거나 같으면 answer에 저장
  • sort_idx 또한 ext_idx와 동일하게 얻음
  • sort(key =  lambda x : x)를 활용하여 주어진 문제 조건에 맞게 정렬
def solution(data, ext, val_ext, sort_by):
    answer = []
    # ext에서 나오는 카테고리를 리스트에 저장 -> index() 활용 
    ext_cat = ['code', 'date', 'maximum', 'remain']
    
    
    for row in data:
        # ext에 맞는 index 번호를 ext_cat를 활용해, ext_idx를 얻음
        ext_idx = ext_cat.index(ext)

        # row[ext_idx] 의 값이 val_ext 보다 작거나 같으면 answer에 저장
        if row[ext_idx] <= val_ext:
            answer.append(row)
    
    # sort_idx 또한 동일하게 구함
    sort_idx = ext_cat.index(sort_by)
    # sort(key = lambda x : x) 활용하여 올바르게 정렬 
    answer.sort(key = lambda x : x[sort_idx])
    
    return answer

'CODING_TEST' 카테고리의 다른 글

[프로그래머스/Python] 올바른 괄호  (0) 2024.12.18
[프로그래머스/Python] 옹알이 (2)  (2) 2024.12.17
[프로그래머스/Python] 기사단원의 무기  (0) 2024.12.17
[프로그래머스/Python] 추억 점수  (0) 2024.12.17
[프로그래머스/Python] [1차] 비밀지도  (1) 2024.12.16
'CODING_TEST' 카테고리의 다른 글
  • [프로그래머스/Python] 올바른 괄호
  • [프로그래머스/Python] 옹알이 (2)
  • [프로그래머스/Python] 기사단원의 무기
  • [프로그래머스/Python] 추억 점수
YAHO_STUDY
YAHO_STUDY
DATA&AI_study.zip
  • YAHO_STUDY
    YAHO_CODE
    YAHO_STUDY
  • 전체
    오늘
    어제
    • 분류 전체보기 (57)
      • Paper Review (0)
      • SQL (16)
      • CODING_TEST (21)
      • Time Series (0)
      • DL (20)
        • NLP (5)
        • LLM&RAG (15)
        • Recommender System (0)
      • 최적화 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    runpod
    qlora
    graph
    양자화
    fine-tuning
    prompt-tuning
    MySQL
    pagedattention
    boj
    Programmers
    hash
    quantization
    SQL
    coding_test
    Lora
    Gemma
    RNN
    한 권으로 끝내는 실전 llm 파인튜닝
    DP
    PEFT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
YAHO_STUDY
[프로그래머스/Python] [PCCE 기출문제] 10번 / 데이터 분석
상단으로

티스토리툴바