-
[파이썬 코테 6기] 4주차 세션 정리기타/파이썬 코테 스터디 6기 2021. 8. 19. 00:39
이 글은 프로그래머스에서 진행하는 코딩테스트와 실무 역량 모두 잡는 알고리즘 스터디(Python반) 6기를 참여하면서 일주일에 한 번(매주 수요일) 진행되는 세션에서 배운 내용을 정리하는 글이다.
오늘은 3주차 세션(2021년 08월 11일 진행)에서 배운 내용을 정리해보려고 한다.
https://programmers.co.kr/learn/courses/12441
<세션을 통해 배운 점>
1. itertools 활용하기
itertools에서 combination과 permutation 함수는 아래의 블로그 글에서 정리한 적 있다.
https://straw961030.tistory.com/186
그래서 combination과 permutation을 활용해야하는 상황에서는 문제없이 활용했다.
하지만, 2가지 함수말고 product라는 함수가 있다는 것을 알았고 이 product의 기능을 정리하려고 한다.
간단하게 기능을 설명하면 곱집합을 반환해준다.
배열 [1, 2, 3]과 [4, 5, 6]이 있다고 생각해보자.
이 두 집합의 원소를 하나씩 꺼내어 만들 수 있는 집합의 경우의 수를 얻고 싶다.
그러면 우리는 [1, 4], [1, 5], [1, 6], [2, 4], [2, 5], [2, 6], [3, 4], [3, 5], [3, 6] 총 9가지를 얻을 수 있다.
이 경우의 수를 얻기 위해서는 이중 for문을 쓰면 얻을 수 있다.
arr1 = [1, 2, 3] arr2 = [4, 5, 6] for i in range(3): for j in range(3): print([arr1[i], arr2[j]]) # 결과 [1, 4] [1, 5] [1, 6] [2, 4] [2, 5] [2, 6] [3, 4] [3, 5] [3, 6]
지금은 집합이 2개여서 코드가 길어지지는 않았지만 배열이 3개, 4개, ... 점점 많아진다면 그 만큼 for문을 써야하기 때문에 코드가 지저분해진다.
이를 위해 product함수를 사용하면 된다.
from itertools import product arr1 = [1, 2, 3] arr2 = [4, 5, 6] arr3 = [7, 8, 9] print(list(product(arr1, arr2, arr3))) # 결과 # [(1, 4, 7), (1, 4, 8), (1, 4, 9), (1, 5, 7), (1, 5, 8), (1, 5, 9), (1, 6, 7), # (1, 6, 8), (1, 6, 9), (2, 4, 7), (2, 4, 8), (2, 4, 9), (2, 5, 7), (2, 5, 8), # (2, 5, 9), (2, 6, 7), (2, 6, 8), (2, 6, 9), (3, 4, 7), (3, 4, 8), (3, 4, 9), # (3, 5, 7), (3, 5, 8), (3, 5, 9), (3, 6, 7), (3, 6, 8), (3, 6, 9)]
함수 하나만 사용하면 코드도 간결해지고 우리가 원하는 값도 얻을 수 있다.
2. 코드를 보여줄 수는 없지만 배운 점들
코딩테스트 스터디 운영법 상 리더님에게 받은 코드리뷰나 리더님의 풀이 코드를 블로그에 게시할 수 없어 코드를 보여주며 설명을 할 수 없다...
간단하게 이번 주차 때 배운 것들은 굳이 if - else로 안써도 되는 것들을 if문 하나로 고쳐주는 리뷰나
list compresshion을 이용하여 코드를 간결하게 해주는 것을 배우면서 다음에 문제를 풀 때는 조금 더 생각해보고 짤 수 있는 팁들을 얻었다.
코딩테스트 후에 코드리뷰를 하지 않는 회사에서는 어떻게 풀어도 상관은 없지만 코드리뷰가 진행된다면 면접관님들이 보기 편한(?) 코드, 없어도 되는 코드를 쓰지 않는 것도 중요한 부분이라고 생각한다.
이러한 점들을 위해 나의 코드에서 바꿀 수 있는 점들을 리뷰해주는 것이 이번 스터디의 장점이라고 생각한다.
<4주차 세션 회고>
오늘도 시간이 되어 라이브 줌(zoom)에 참여했다.
오늘은 난이도가 쉬운 완전탐색문제부터 시작해 나에게는 가장 어렵다고 느껴지는 재귀함수를 사용하는 문제까지 풀었다.
하노이 탑과 N-Queen은 백준에서 푼 경험이 있기 때문에 어렵지 않게 풀었다.
만약에 위 2문제 이외의 재귀함수를 이용한 문제가 나왔다면 엄청 해멧을 것같다.
재귀함수를 완벽히 이해하고 싶은데 봐도봐도 새롭다...
오늘 세션을 통해 전역변수를 사용하지 않고 재귀함수에서 결과값을 리턴해주는 것이나 정말 신기한 풀이법을 배웠다.
신기한 풀이법은 지금의 나에게는 너무 높은 것이기에 지금은 잠시 미뤄두고 나중에 꼭 그 방법을 이해허여 풀어보고 싶은 마음이 생겼다.
'기타 > 파이썬 코테 스터디 6기' 카테고리의 다른 글
[파이썬 코테 6기] 마지막 세션 최종 후기 (0) 2021.08.25 [파이썬 코테 6기] 3주차 세션 정리 (0) 2021.08.11 [파이썬 코테 6기] 2주차 세션 정리 (0) 2021.08.09 [파이썬 코테 6기] 1주차 세션 정리 (0) 2021.07.29