분류 전체보기
데커레이터 함수 이해하기
데커레이터 함수 이해하기
2020.11.27""" 함수 데커레이터는 소스 코드에 있는 함수를 '표시'해서 함수의 작동을 개선할 수 있게 해준다. 강력한 기능이지만, 데커레이터를 자유자재로 사용하려면 먼저 클로저를 알아야한다. 파이썬 3.0에 추가된 nonlocal은 최근에 추가된 예약 키워드 중 하나다. """ """ 데커레이터는 다른 함수를 인수로 받는 콜러블(데커레이트된 함수)이다. 데커레이터는 데커레이트된 함수에 어떤 처리를 수행하고, 함수를 반환하거나 함수를 다른 함수나 콜러블 객체로 대체한다. """ """ 데커레이터의 핵심 특징은 데커레이트된 함수가 정의된 직후에 실행된다는 것이다. 이는 일반적으로 파이썬이 모듈을 로딩하는 시점, 즉 임포트 타임에 실행된다. """ def deco(func): def inner(): print("run..
선생님 퀴즈
선생님 퀴즈
2020.11.27#include int main() { int n; scanf("%d", &n); int *input = new int[n]; int *answer = new int[n]; for (int i = 0; i < n; i++) { int a, b; scanf("%d %d", &a, &b); input[i] = a; answer[i] = b; } for (int j = 0; j < n; j++){ int sum = 0; for(int k = 1; k
메서드타입 - class method
메서드타입 - class method
2020.11.27class A: count = 0 def __init__(self): A.count += 1 def exclaim(self): print("I'm an A") @classmethod def kids(cls): print("A has", cls.count, "little objects.") easy_a = A() breezy_a = A() wheezy_a = A() A.kids() class 메서드는 클래스 전체에 영향을 미친다. class 에 어떤 변화는 모든 객체에 영향을 미친다. 클래스 정의에서 함수에 @classmethod 데커레이터가 있다면 이것은 클래스 메서드다. 또한 이 메서드의 첫 번째 매개변수는 클래스 자신이다. 파이썬 에서는 보통 이 클래스의 매개변수를 cls로 쓴다. class는 예약어..
Anagram (구글 인터뷰문제)
Anagram (구글 인터뷰문제)
2020.11.25#include #include int main() { int a[60]{ 0 }; int b[60]{ 0 }; char str[100]; scanf("%s", &str); for(int i = 0; str[i]!='\0'; i++){ // 대문자를 확인 if (str[i]>=65 && str[i]=65 && str[i]
제너레이터를 이용한 지연 실행
제너레이터를 이용한 지연 실행
2020.11.25""" 메모리 사용 측면에서 제너레이터가 유리한 경우는 현재 값만 필요한 경우 제너레이터를 사용한 피보나치 수열 계산에서도 항시 현재 값만 사용할 뿐 수열 앞쪽에 나온 다른 값을 참조 할수 없다. 이런 알고리즘을 단일 패스 single pass or online 이라고 한다. 이런 특징 때문에 제너레이터를 사용하기 어려운 경우가 있는데, 그럴 때 도움 이 되는 모듈이나 함수가 많다. 그중 표준 라이브러리인 itertools 가 가장 대표적이다. 대표적인 유용한 함수는 다음과 같다. 초 단위로 기록된 20년 치의 데이터를 분석한다고 하면 처리해야 할 데이터의 수는 631,152,000개 입니다. 파일에 저장되어 있고 초단위로 한 줄씩 기록되어 있다. 이 전부를 메모리에 올릴 수는 없는 상황이다. 이데이터에..
파이썬에서 효율적으로 피보나치 수열 접근하기
파이썬에서 효율적으로 피보나치 수열 접근하기
2020.11.25# 500이하의 피보나치 수 중에서 홀수는 몇개인지 세는 방법 def fibonacci_naive(): i, j = 0, 1 cnt = 0 while j 5000: break if f % 2: cnt += 1 return cnt from itertools import islice def fibonacci_succinct(): is_odd = lambda x: x % 2 first_5000 = islice(fibonacci(), 0, 5000) return sum(1 for x in first_5000 if is_odd(x)) 세가지 함수 모두 5000보다 작은 피보나치 수열중에서 홀수의 개수를 구하는 함수입니다. 세가지 함수 모두 속도와 메모리 사용량이 비슷하지만 fibonacci_transform 함수..
bisect 모듈을 이용한 가까운 값 찾기
bisect 모듈을 이용한 가까운 값 찾기
2020.11.25# bisect 모듈을 이용해서 가까운 값 찾기 import bisect import random def find_closest(haystack, needle): # bisect.bisect_left는 haystack에서 needle보다 크거나 같은 # 첫 번째 값의 위치를 반환한다. i = bisect.bisect_left(haystack, needle) if i == len(haystack): return i - 1 elif haystack[i] == needle: return i elif i > 0: j = i - 1 # 여기서, i번째 값은 needle보다 크므로(반대로 j번째 값은 needle보다 작다) # i번째 값과 j번째 값 중 어떤 값이 needle에 가까운지 비교하기 위해 # 절대값을 ..
ctyhon - cProfile 모듈 사용하기
ctyhon - cProfile 모듈 사용하기
2020.11.24cprofile 의 -s cumulative 옵션은 각 함수에서 소비한 누적 시간순으로 정렬되어 어떤 함수가 더 느린지 쉽게 확인할수 있다. cProfile의 출력 결과는 코드의 print문이 모두 출력 된 뒤에 화면에 출력된다. python -m cProfile -s cumulative test.py 를 입력하면 누적 소비 시간으로 정렬하면 실행 시간을 주로 소비하는곳이 어딘지 쉽게 확인할 수 있다.
c++ 함수 템플릿 사용하기
c++ 함수 템플릿 사용하기
2020.11.23동작하는 방식은 똑같은데 parameter 가 다른경우 일일이 다른 함수를 만들어 줘야하는 번거로움이 있습니다. int getMax(int x, int y) { return (x > y) ? x : y; } double getMax(double x, double y) { return (x > y) ? x : y; } 두가지 만 해도 함수를 하나더 만들어 줘야하는데 float char 등등.. 여러가지 type의 같은 함수를 많이 만들수록 유지보수도 힘들어집니다. 그래서 template 라는 함수를 사용해서 코드를 간소화 시키겠습니다. template T getMax(T x, T y) { return (x > y) ? x : y; } template 보통 T를 많이 쓰지만 원하시는 변수명을 지으셔도 상관없..
c++ 1359 : 숫자 피라미드 1
c++ 1359 : 숫자 피라미드 1
2020.11.17문제 설명 길이 nn이 입력되면 다음과 같은 숫자 피라미드를 출력한다. 예) nn이 5이면 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 입력 길이 nn이 입력된다.(1
c++ 1358 : 삼각형 출력하기 5
c++ 1358 : 삼각형 출력하기 5
2020.11.17문제 설명 어떤 수 n을 입력받으면 다음과 같은 삼각형을 출력한다. 여기서 입력되는 n은 반드시 홀수이다. 입력 3부터 99 까지의 홀수 중 하나가 입력된다. 출력 Sample Output 같은 삼각형을 출력한다. 입력 예시 5 출력 예시 * *** #include int main() { int x, space; scanf("%d", &x); space = x / 2; for (int i = 1; i
정수와 문자의 최대/최소값 알아내기(min, max)
정수와 문자의 최대/최소값 알아내기(min, max)
2020.11.15#include #include #include using namespace std; int main() { auto result1 = min(1, 5); auto result2 = max('a', 'z'); cout