[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 엄준식
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv2 숫자 변환하기 (python) (1) | 2024.02.01 |
---|---|
프로그래머스 Lv2 이진 변환 반복하기 (python) (0) | 2024.02.01 |
프로그래머스 Lv1 [PCCE 기출문제] 9번 / 이웃한 칸 (python) (1) | 2024.02.01 |
프로그래머스 스킬체크 레벨 1 통과해따리 (0) | 2024.01.31 |
프로그래머스 LV1 최댓값 구하기 (MySQL) (0) | 2024.01.31 |