본문 바로가기

분류 전체보기154

numpy numpy 라이브러리 불러오기 import numpy as np numpy는 파이썬에서 보다 효율적인 배열을 지원한다. 파이썬이 아닌 C로 내부로 구현되어 하드웨어의 친화적인 C의 특성으로 계산 속도면에서 파이썬의 리스트보다 우월하다. list = [1, 2, 10] list2 = [ [1,2,3], [4,5,6], [7,8,9]] # 넘파이 배열 생성 arr = np.array(list) arr2 = np.array(list2) # 넘파이는 각 요소의 연산을 지원한다 list * 3 # [ [1,2,10], [1,2,10], [1,2,10] ] arr * 3 # [ 3 6 30 ] # 넘파이는 기존의 리스트 형식이 아닌 ndarray라는 타입으로 저장된다. list2 # [ [1,2,3], [4,5,6.. 2021. 9. 16.
Refactoring - 메서드 정리 Extract Metho - Problem : 그룹으로 함께 묶을 수 있는 코드 조각이 있는 경우 - Solution : 코드의 목적이 잘 드러나도록 메소드의 이름을 지어 별도의 메소드로 뽑아 낸다 # 수정 전 void pringOwing() { pring Banner(); System.out.println("name : " + name); System.out.println("amount : " + getOutstanding()); } # 수정 후 void printOwing() { printBanner(); printDetails(getOutstanding()); } void printDetails(double outstanding) { System.out.println("name : " + name).. 2021. 9. 16.
Refectoring Refectoring 이란? 외부 동작을 바꾸지 않으면서 내부 구조를 개선하는 방법 버그가 끼어들 가능성을 최소화하면서 코드를 정리하는 "정형화된 방법" 코드를 작성한 후에 코드의 디자인을 개선하는 것 Refectoring 에서 요구하는 코드 = 깔끔한 코드 깔끔한 코드는 모든 테스트를 통과한다. 깔끔한 코드는 다른 프로그래머에게도 그 의미가 명백하다 깔끔한 코드에는 중복이 존재하지 않는다. 깔끔한 코드는 최소한의 클래스, 즉 꼭 픽요한 클래스만을 가진다. 깔끔한 코드는 더 적은 비용으로 , 더 쉽게 유지보수 할 수 있다. Bad smells in Code Refectoring의 깔끔한 코드에 속하지 않는 고쳐야 할 코드 Bad smell code 중복된 코드 코드가 여기저기 겹쳐 있는 경우 긴 메소드 .. 2021. 9. 15.
최단 경로 알고리즘 (3) 플로이드 워셜 알고리즘 플로이드 알고리즘은 '모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구해야 하는 경우'에 사용할 수 있는 알고리즘이다. 다익스트라 : 단계마다 최단 거리를 가지는 노드를 하나씩 반복적 선택 , 해당 노드를 거치는 경로를 확인하며 테이블을 갱신해 나간다. ( 탐욕법 ) 플로이드 : 단계마다 ' 거쳐 가는 노드'를 기준으로 수행되지만 매번 방문하지 않는 노드 중에서 최단 거리를 갖는 노드를 찾을 필요가 없다. ( 동적 프로그래밍 ) 노드의 개수가 N개일 때, 알고리즘상 N번의 단계를 수행하고 단계마다 O(N^2)의 연산을 통해 '현재 노드를 거쳐 가는 모든 경로'를 고려한다. 따라서 총 시간 복잡도는 O(N^3)이다. 플로이드 알고리즘에서는 모든 노드에 대하여 다른 모든 노드로.. 2021. 9. 8.
반응형