-
파이썬을 파이썬 답게_3Python 2019. 11. 29. 13:47
이전 글 보러 가기
2019/11/22 - [Python] - 파이썬을 파이썬답게_2
프로그래머스의 파이썬을 파이썬답게 라는 강의를 보고 정리한 글이다.
순열과 조합
숫자를 담은 일차원 리스트로 만들 수 있는 순열을 모두 구하기(사전 순으로 정렬)
- 입력
[2, 1] [1, 2, 3]
- 출력
[[1, 2], [2, 1]] [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]
- 기본적인 순열 작성 코드
n = 2 arr = [1, 2] res = [0, 0] used = [0, 0] def f(k, n): if k == n: print(res) return else: for i in range(n): if used[i] == 0: used[i] = 1 res[k] = arr[i] f(k+1, n) used[i] = 0 f(0, n)
- 내가 작성한 코드
def solution(arr): arr = sorted(arr) n = len(arr) used = [0]*n res = [0]*n answer = [] def f(k, n): if k == n: a = [] for i in res: a.append(i) answer.append(a) return answer else: for i in range(n): if used[i] == 0: used[i] = 1 res[k] = arr[i] f(k+1, n) used[i] = 0 f(0, n) return answer
- itertools.permutation을 이용한 코드
import itertools nums = [1, 2, 3] print(list(map(list, itertools.permutations(nums)))) # [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]] print(list(map(list, itertools.permutations(nums, 2)))) # [[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]
- itertools.combinations 사용 방법
import itertools nums = [1, 2, 3] print(list(map(list, itertools.combinations(nums, 2)))) # [[1, 2], [1, 3], [2, 3]]
가장 많이 등장하는 알파벳 찾기
입력된 문자열 중 가장 많이 나오는 알파벳만을 사전 순으로 출력
- 입력
'aab' 'dfdefdgf' 'bbaa'
- 출력
'a' 'df' 'ab'
- 내가 작성한 코드
my_str = input().strip() words = sorted(my_str) max_idx = 0 res = "" box = "" for i in words: if i not in box: cnt = words.count(i) box += i if max_idx < cnt: max_idx = cnt res = i elif max_idx == cnt: res += i print(res)
- 파이썬의 collections.Counter 클래스
import collections my_list = [1, 2, 3, 4, 5, 6, 7, 8, 7, 9, 1, 2, 3, 3, 5, 2, 6, 8, 9, 0, 1, 1, 4, 7, 0] answer = collections.Counter(my_list) print(answer[1]) print(answer[3]) print(answer[100]) # 4 # 3 # 0
for문과 if문을 한번에
정수를 담은 리스트를 입력 받아 원소 중 짝수인 값을 제곱하여 리스트에 담아 출력
- 입력
[3, 2, 6, 7]
- 출력
[4, 36]
- 내가 작성한 코드
def solution(mylist): res = [] for i in mylist: if i % 2 == 0: res.append(i**2) return res
- 보통은 위처럼 for문 안에 조건문을 사용해서 2-depth 블록을 만든다(들여쓰가가 두번 사용)
- List comprehension의 if문
mylist = [3, 2, 6, 7] answer = [i**2 for i in mylist if i % 2 == 0] print(answer
'Python' 카테고리의 다른 글
[python] 우선순위 큐 알고리즘 - heapq 모듈 (0) 2020.10.06 반복문 상태바 라이브러리(tqdm) (0) 2020.08.17 파이썬을 파이썬답게_2 (0) 2019.11.22 파이썬을 파이썬답게_1 (0) 2019.09.30 [Python] zip() 함수 (0) 2019.09.10