https://programmers.co.kr/learn/courses/30/lessons/84325?language=python3
재미있는 구현 문제
○ 문제풀이
def solution(table, languages, preference): returnTableCount = [] returnTable = [] tablesum = 0 realtable = [] # 있으면 index위치 반환, 없으면 0 반환 # 분야별로 정리 for i in range(5): returnTable.append(table[i].split()) realtable.append(returnTable[i][0]) returnTable[i].reverse() for i in range(5): for j in range(len(languages)): if languages[j] in returnTable[i]: tablesum += (returnTable[i].index(languages[j]) + 1) * preference[j] returnTableCount.append(tablesum) tablesum = 0 # returnTableCount = [29, 36, 41, 21, 25] answer = list(zip(realtable, returnTableCount)) answer.sort(key = lambda x : (-x[1], x[0])) return answer[0][0] |
분야별로 table을 재정렬 한 값과, 각 분야 점수를 list로 따로 받은 다음 zip함수를 이용해 sort 하여 구현했다.
○ 새롭게 배운 점
zip함수를 처음 사용해봤고 파이썬 정렬 문제에서는 정말 유용한 함수인 것 같다.
zip함수는 파이썬 내장 함수이다.
zip(*iterable)은 동일한 개수로 이루어진 자료형을 묶어 주는 역할을 하는 함수이다.
※ 여기서 사용한 *iterable은 반복 가능(iterable)한 자료형 여러 개를 입력할 수 있다는 의미이다.
잘 이해되지 않는다면 다음 예제를 살펴보자.
>>> list(zip([1, 2, 3], [4, 5, 6]))
[(1, 4), (2, 5), (3, 6)]
>>> list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9]))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> list(zip("abc", "def"))
[('a', 'd'), ('b', 'e'), ('c', 'f')]
zip함수 출처 : https://wikidocs.net/32
728x90
'파이썬알고리즘' 카테고리의 다른 글
백준 1605 한수 (파이썬) (0) | 2021.08.30 |
---|---|
Programmers Summer/Winter Coding(~2018) 소수 만들기 (0) | 2021.08.25 |
Programmers Weekly challenge - 2주차 (0) | 2021.08.24 |
20210816#(80) 백준 100문제 돌파! (부제 : 게시글 99개 달성) (0) | 2021.08.16 |
20210814#(80) 백준 1237번 정ㅋ벅ㅋ (난이도 상, 꿀잼) (0) | 2021.08.14 |