2024. 4. 28. 16:19ㆍ코드리뷰
공부하는허딩크 : https://www.youtube.com/live/7NjVRfUec38?feature=shared
백준에서 문제번호 2798번 블랙잭 문제를 풀면서 삼중for문을 만들어서 해결했다.
삼중for문 말고 이중for문이 조금 더 효율적인 것을 배웠다. (아래 링크 참조)
블랙잭 풀이 : https://heodinkcodingdiary.tistory.com/19
블랙잭 for문 비교 : https://heodinkcodingdiary.tistory.com/20
프로그래머스에서 알고리즘 문제를 풀다가 itertools란 라이브러리가 있는 것을 알고는 있었는데 아직 내것으로 만들지는 못했다. 이번 기회에 정리해서 활용해보자.
원론적인 이야기는 다른 글에서 많이 소개되었으니 나만의 방법으로 정리하겠다.
from itertools import combinations
와 같이 라이브러리를 호출해야한다. 혹시 설치가 안되어 있다면 pip install itertools를 입력창에 입력해본다.
import itertools만 입력하면 코드에서 활용할때 itertools.combinations(인자, 인자)로 작성해야 하며,
from itertools import combinations를 입력하면 combinations(인자, 인자)로 itertools를 빼고 사용 가능하다.
from itertools import combinations as cb(가칭)으로 하면 cb(인자, 인자)로 itertools와 combinations모두 빼고 사용 사능하다. (내가 잘 모르는 원론적인 부분이라 따로 정리했음)
여러가지 함수들이 있겠지만 아래 몇가지만 알면 된다. 비슷한것 같지만, 중복을 인정하느냐, 순서를 고려하느냐의 차이가 있어서 주의가 필요하다.
1. combinations() : (iterable, n) ==> iterable에서 원소개수가 n개인 조합 뽑기 (중복 없음, 순서 고려 안함)
ㄴ 여기서 중복이 없다는 것은 같은 인덱싱 숫자는 선택이 되지 않는다는 의미 => [1, 1] , [2, 2], [3, 3] 안됨
ㄴ 순서 고려 안함은 아래 예시에서 [1, 2] 와 [2, 1]은 동일한 것으로 본다 => [2, 3], [3, 2] 안됨
2. permutaions() : (iterable, n = None) ==> n = None의 의미는 개수를 입력하지 않으면 기존 iterable의 개수를 유지함.
ㄴ combinations와 차이점은 중복없음 동일 / 순서 고려함
ㄴ 순서를 고려한다는 의미는 [1, 2]와 [2, 1]이 다른 값으로 해석된다.
3. combinations_with_replacement() : (iterable, n) ==> iterable에서 원소개수가 n개인 조합 뽑기 (중복 있음, 순서 고려 안함)
ㄴ combinations과 다른 점은 중복이 있다는 것 => [1, 1] , [2, 2], [3, 3] ok
4. product() : (*iterable, repeat = 1) ==> *가 붙는건 여러 iterable을 인자로 줄 수 있다는 의미, repeat은 출력개수를 의미
ㄴ repeat 상세 : a = ['A', 'B'] b = [1, 2]의 이터러블한 인자가 있다면 product(a, b, repeat = 1)로 주면 a와 b에서 각 1개씩 출력함.
ㄴ product(a, repeat = 3)을 하면 a의 인자들을 3개로 조합해서 출력함
1. combinations(iterable, n)
(1, 2)
(1, 3)
(2, 3)
2. permutaions(iterable, n)
(1, 2)
(1, 3)
(2, 1)
(2, 3)
(3, 1)
(3, 2)
3. combinations_with_replacement(iterable, n)
(1, 1)
(1, 2)
(1, 3)
(2, 2)
(2, 3)
(3, 3)
4. product(*iterable, repeat = 1)
('1', 'a')
('1', 'b')
('2', 'a')
('2', 'b')
('a', 'a')
('a', 'b')
('b', 'a')
('b', 'b')
일단 itertools 라이브러리에 4개의 함수만 암기하고 넘어가자.
'코드리뷰' 카테고리의 다른 글
[python_파이썬]백준_19532번_수학은 비대면강의입니다_풀이 (0) | 2024.04.28 |
---|---|
[python_파이썬]백준_2231번_분해합_풀이 (1) | 2024.04.28 |
★[python_파이썬_pass]백준_2798번_블랙잭_풀이_삼중for문 비교 (1) | 2024.04.28 |
[python_파이썬_pass]백준_2798번_블랙잭_풀이 (0) | 2024.04.27 |
[python_파이썬_이해안감]백준_24313번_알고리즘 수업 - 점근적 표기1_풀이 (0) | 2024.04.27 |