모든 게시물은 macOS Monterey 12.0.1 버전 기준으로 작성하였습니다.
programmers '파이썬을 파이썬답게' 강의를 바탕으로 작성하였습니다.
이번에도 역시 거짓말처럼 보통 사람들은 ~ 에 해당하는 풀이를 냈다.
심지어 join은 이따금 누군가의 알고리즘 답안에서 자주 봤는데 막상 이용할
생각은 들지 않는다. 경험을 쌓자.
떠올릴 수 있을까라는 우려는 생기지만 떠올릴 수 있어야 한다.
역시 이중반복문이 가장 먼저 떠오른다..
단일반복문 풀이도 존재하고..
더 좋은 방법들도 있다.
이해해서 활용할 수 있을 것처럼 보이는 방법은 위 세 가지 정도.
특히 reduce 함수를 처음 봤는데 매우 유용하다.
reduce 함수를 활용한 몇 가지 예를 확인하자.
from functools import reduce 형태로 import 하며,
reduce(집계함수, 순회 가능 데이터, 초기값) 형태로 사용한다.
누적합 계산
초기값이 존재하면 그 초기값에 하나씩 더해가는 것을 확인하자.
초기값이 없다면 첫 번째 원소 1부터 뒤의 값이 더해지니 수행은 9번
초기값이 있다면 10에 첫 번째 원소가 더해지며 시작하니 총 수행은 10번이다.
특정 key 값만 더하기
음 아직 의문인 건 초기값을 잡지 않으면 에러가 뜨고,
해결하기 위해 x['key'] + y['key'] 형태로 놓아도 에러가 뜬다.
첫 번째 에러는 dict와 int는 더할 수 없다는 에러.
두 번째 에러는 int는 subscriptable 하지 않다는 에러.
첫 번째 에러는 코드 자체가 lambda x, y : x + y['age']니까 이해가 되는데
두 번째 에러는 검색을 해봤는데.. 왜 뜨는 지는 이해가 되질 않는다,,
정수 자료형에 인덱싱을 해버리면 생기는 에러라고 하는데..
풀지 못했다. 알파벳 소문자로 이루어진 리스트를 짜고 for문을 돌려가며
해당하는 원소의 인덱스를 하나씩 높여 최대 위치를 찾으려고 했지만
두 번째 예시와 같은 경우를 해결하지 못한다.
어떤 단어가 주어졌을 때 단어에 포함된 각 알파벳의 글자 수를 세어주는 함수다.
사전형 데이터에서 value 값을 추출하고 내림차순으로 정렬한다.
가장 큰 value 값이 해당 리스트의 0번째 index에 존재할 것이기에 big 변수에 저장.
[ i for i, k in mydict.items() if big == k ] 가 제일 이해하기 어려웠는데
mydict.items()는 dict_items([('d', 3), ('f', 3), ('e', 1), ('g', 1)]) 형태로 출력되고,
i를 리스트에 넣을 건데 k가 big이랑 같은 알파벳만 리스트에 넣을 거야 ~ 라는 이야기.
마지막으로 사전순 정렬을 하면 정답이다.
'Python > Programmers 강의정리' 카테고리의 다른 글
[ 파이썬을 파이썬답게 ] list comprehension, flag, for-else, binary search, inf, 파일 입출력 등등 (2) | 2022.01.14 |
---|---|
[ 파이썬을 파이썬답게 ] Iterable 다루기 ( list, str, tuple, dictionary ) (0) | 2021.12.16 |
[ 파이썬을 파이썬답게 ] 정수 다루기, Str 다루기 (0) | 2021.12.16 |
[ 파이썬을 파이썬답게 ] 수강 전에 이 문제를 풀어보세요. (0) | 2021.12.13 |