파이썬 프로그래밍

    Stack(스택), Queue(큐) 자료구조 [이코테 - 나동빈]

    DFS(깊이 우선 탐색), BFS(너비 우선 탐색) 알고리즘에 대하여 알기 전에 먼저 알아두어야 할 자료구조가 있다. 오늘의 주제인 Stack(스택), Queue(큐)이다. 두 주제를 알기전에 간단한 용어에 대하여 정리하자. - Push(삽입) : 자료구조에 데이터를 삽입한다. - Pop(삭제) : 자료구조에서 데이터를 삭제한다. - Overflow(오버플로) : 스택, 큐와 같은 자료구조가 수용할 수 있는 데이터의 크기가 이미 가득찬 상태에서 삽입하려 할 때 발생한다. - Underflow(언더플로) : Overflow와 반대로 데이터가 전혀 들어있지 않은데 데이터를 삭제하려 하려 할때 발생한다. Stack(스택) Stack은 그림과 같이 위에서 부터 차곡차곡 쌓아 놓는 형태 이다. 그래서 아래에 있는..

    그리디(Greedy)=탐욕법 알고리즘 [이코테-나동빈]

    그리디(Greedy) = 탐욕법 알고리즘 : 현재 상황에서 지금 당장 좋은 것만 고르는 방법 *매 순간 가장 좋아 보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향은 고려하지 않음 알고리즘 테스트에서는 창의력, 문제를 풀기위한 아이디어를 떠올리면 그리디 알고리즘은 해결할 수 있다! 문제에서 '가장 큰 순서대로', '가장 작은 순서대로'와 같은 기준을 제시할 수 있으니 정렬알고리즘과 같이 사용하는 경우가 많다. 거스름돈 문제 카운터에 거스름돈으로 사용할 500원, 100원, 50원, 10원이 무한히 존재할 때 거스름돈으로 N원을 줘야하는데 이때 거슬러 줘야할 동전의 최소 개수를 구하는 경우 단 N은 항상 10의 배수이다. #그리디 알고리즘 #거스름돈 대표적 문제 n = int(input()) coun..

    시간복잡도, 공간복잡도 [이코테-나동빈]

    복잡도 : 일반적으로 알고리즘의 성능을 나타내는 척도 - 시간 복잡도(Time Complexity) : 특정한 크기의 입력에 대하여 알고리즘이 얼마나 오래 걸리는지 의미 - 공간 복잡도 : 특정한 크기의 입력에 대하여 알고리즘이 얼마나 많은 메모리를 차지하는지 의미 *복잡도가 낮을 수록 좋은 알고리즘 *시간복잡도와 공간복잡도는 Trade-Off 관계 - 메모리를 많이 사용하는 대신 시간을 줄일 수 있고, 메모리를 적게 사용하는 대신 시간이 늘어날 수 있다. 시간복잡도(Time Complexity) 일반적(알고리즘 문제시)으로 시간복잡도 == 복잡도를 의미한다. *시간복잡도가 중요한 이유는 알고리즘 테스트시에 제한시간을 넘겨 시간초과(Time Limit Exceeded)로 오답이 될 수있음 빅오(Big-O..

    numpy 배열 생성하기 arange()

    numpy 라이브러리의 arange(), reshape() 메서드에 대하여 정리합니다. np.arange() np.arange(10) 함수를 사용하게 될경우에는 0부터 순차적으로 9까지의 ndarray를 생성합니다. import numpy as np arange = np.arange(10) print(arange) arange() 함수에는 start, stop의 인자값이 존재합니다. 위의 예를 start와 stop을 이용하여 출력하겠습니다. arange = np.arange(start=0, stop=10) print(arange) 같은 결과가 나오는 것을 볼 수 있습니다. start 시작값을 의미하고, start 값을 포함합니다. stop ndarray의 개수를 의미한다고 생각하면 좋을 것 같습니다. s..

    numpy 배열 생성하기 zeros(), ones()

    numpy에서 자주쓰이는 zeros(), ones() 함수를 정리합니다. zeros() 함수 import numpy as np shape = (3,2) #row=3, column=2 zero_array = np.zeros(shape) np.zeros() 함수는 위와 같이 크기를 인자값으로 받게되는데 행렬의 크기나 ndarray의 크기를 지정해주면 됩니다. 이렇게 만든 zero_array를 출력해보면 print(zero_array) print(type(zero_array)) print(zero_array.dtype) - zero_array의 타입은 numpy.ndarray 타입으로 넘파이 배열입니다. - zero_array의 데이터의 타입은 'float64' 입니다. ※ zeros()함수의 default ..

    numpy 배열 생성하기

    Numpy 배열을 생성하기 위하여 가장 먼저 해야할 것은 Numpy를 사용하기 위하여 import 하는것이다. import numpy as np list1 = [1,2,3] array1 = np.array(list1) #array1 = np.array([1,2,3]) 파이썬 리스트로 객체를 전달 혹은 생성하여 np.array()함수에 인자로 넣어주면 된다. print("array1 타입 : ", type(array1)) print("array1 타입 형태 : ", array1.shape) print("array1 : ", array1) array1 타입 : array1 타입 형태 : (3,) array1 : [1 2 3] array1.shape 를 하게 되면 ndarray의 크기를 알 수 있다. prin..