Programming language

    [python] F-String

    [python] F-String

    📗 F-String 코딩을 하다보면 당연히 변수와 상수(?)를 같이 써야할 때가 온다. 기존에는 이렇게 다양하게 표현했다. name = 'deok' language = 'python' print('hi, my name is ' + name + '! ' + 'I like ' + language + '.') print('hi, my name is {}! I like {}.'.format(name, language)) print('hi, my name is %s! I like %s.' % (name, language)) ## hi, my name is deok! I like python. 보다시피 가독성이 매우 안좋다. 여기서 변수가 더 많아지면... 😂 이와 같은 문제를 해결하기 위해 python 3.6 버..

    [python] filter

    [python] filter

    📗 filter python의 built-in함수로 리스트나 딕셔너리같은 iterable한 데이터를 조건에 맞는 값만 추출할 때 사용하는 함수이다. 🔵 사용법 filter(function(함수), iterable(리스트나 딕셔너리등) 🔹 함수를 넣어 사용할 때 def func(x): if x % 2 == 1: return x lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] odd_lst = list(filter(func, lst)) print(odd_lst) # >>> [1, 3, 5, 7, 9] 🔹 lambda로 사용할 때 lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] odd_lst = list(filter(lambda x: x % 2 == 1, lst)) pr..

    [python] accumulate(itertools), 누적 합

    [python] accumulate(itertools), 누적 합

    📗 accumulate 뜻으로는 축적하다? 한마디로 누적된 합을 뽑아주는 녀석 🔵 사용법 from itertools import accumulate a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] b = list(accumulate(a)) print(a) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(b) # [1, 3, 6, 10, 15, 21, 28, 36, 45, 55] 값이 저절로 누적되는 것을 볼 수 있다. 이것을 왜 사용하느냐하면 사실 for문 만으로도 값을 누적한 리스트를 뽑을 수 있지만 속도면에서 큰 차이가 난다.( 특히 값이 커지면 커질수록 ) 🔵 속도 측정 1번 for문 a = [x+1 for x in range(1000000)] for i in..

    [python] defaultdict

    [python] defaultdict

    📗 defaultdict defaultdict 는 dict 의 서브 클래스이다. 이름에서 유추할 수 있듯이 기본값(default)를 설정할 수 있는 좋은 친구이다. 🔵 defaultdict 이러한 번거로움을 없애주는게 바로 defaultdict이다. defaultdict는 처음 선언할 때 다양한 기본값을 지정할 수 있다. from collections import defaultdict my_defaultdict = defaultdict(int) print(my_defaultdict) # defaultdict(, {}) my_defaultdict = defaultdict(dict) print(my_defaultdict) # defaultdict(, {}) my_defaultdict = defaultdict..

    [python] pow, 제곱, 거듭제곱과 나머지

    [python] pow, 제곱, 거듭제곱과 나머지

    📗 파이썬에서 거듭제곱과 나머지를 구할 때! 속도 차이 🔵 pow(a,b) vs a**b 100의 100승을 구할 때 입력 방법 속도 100**100 0.8038559000000001 pow(100, 100) 0.8454946999999997 - 거듭제곱을 했을 때는 ** 을 쓰는것이 조금 더 빠르다. 하지만!! 🔵 pow(a,b,c) vs a**b%c 100의 100승을 100으로 나눈 나머지를 구할 때 입력 방법 속도 100**100%100 1.1507907 pow(100, 100, 100) 0.6850590000000001 - 나머지까지 했을 때는 pow가 훨씬 빠르다!! pow를 써보자 🔵 예외... 1000의 1승을 100으로 나눈 나머지 입력 방법 속도 100**10%10 0.007485599..

    [python] input, sys.stdin.readline

    [python] input, sys.stdin.readline

    📗 파이썬 알고리즘 풀 때!! 입력 속도 문제 🔵 input vs sys.stdin.readline 천만개의 숫자를 한줄한줄 입력받을 때의 속도 입력 방법 속도 input() 12.5초 sys.stdin.readline() 4.5초 결론: 여러줄을 입력받을 때는 input() 대신 sys.stdin.readline() 를 쓰자 출처: BACKJOON ONLINE JUDGE 링크: https://www.acmicpc.net/blog/view/56 입력 속도 비교 여러가지 언어와 입력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 첫째 줄에 정수의 개수 N (= 10,000,000), 둘째 줄부터 N개의 줄에 한 개의 자연수(10,000 이하)가 적힌 파일�� www.acmicpc.net