728x90

분류 전체보기 163

객체지향특성

컴퓨터의 발달로 인해 소프트웨어의 크기가 커지게 되었고, 절차지향언어인 C언어로 소프트웨어를 개발하는 데 어려움이 커지게 되었다. 그래서 C언어에 객체지향특성을 추가하여 만들어진 것이 바로 C++이다. C++는 C언어의 모든 기능을 가진다. 하지만 C언어와의 호환성을 위해서 객체지향특성을 어느정도 절충하여 만들어졌다. C++는 객체지향언어이므로 캡슐화, 상속성, 다형성의 특성을 가진다. 1학년 때 배웠던 내용들이지만 하나씩 되새겨보자.(C++수업을 들으며 정리한 내용인가보다.. ㅎㅎ) 1.캡슐화 캡슐화는 데이터를 캡슐로 싸서 외부에서의 접근으로부터 보호한다는 의미이다. C++에서 이 캡슐의 역할을 하는 것이 바로 클래스이다. 클래스에서 private로 선언한 변수들을 외부에서 접근할 수 없어 보호되며, ..

기타 2021.03.04

[알고리즘]동적 계획법

1.동적계획법(Dynamic Programming, DP) 전체 문제를 작은 부분 문제로 나누어 해결하는 방법 동적계획법의 대표적인 예인 피보나치 수열을 통해 개념을 살짝 이해해보자. 피보나치 수열은 다음과 같다. 1,1,2,3,5,8,13,21,... 다음과 같이 N번째 값은 N-1번째 값과 N-2번째 값이 더해져서 만들어진다는 규칙이 있다. 그럼 이것을 점화식으로 표현해보면 F(N)=F(N-1)+F(N-2)와 같다. def fibo(n): if n==1: return 1 elif n==2: return 1 else: return fibo(n-2)+fibo(n-1) 위 코드대로 실행해보면 성공적으로 피보나치 수열이 구해지는 것을 볼 수 있다. 근데 문제점이 있다. 매개변수의 값이 너무 커지면 실행시간이..

알고리즘 2021.01.18

[알고리즘]깊이/너비 우선 탐색

1.그래프 알고리즘 1-1.그래프 정점(vertex)와 edge로 이루어져 있다. 방향성을 가질 수도 있다. 1-2.파이썬으로 그래프를 표현해보자 #vertexList: vertex들을 리스트에 전부 넣은 것 #edgeList: edge들을 리스트에 전부 넣은 것 vertexList=['0','1','2','3','4','5','6'] edgeList=[(0,1),(0,2),(1,0),(1,3),(2,0),(2,4),(2,5),(3,1),(4,2),(4,6),(5,2),(6,4)] adjacencyList=[[] for vertex in vertexList] for edge in edgeList: adjacencyList[edge[0]].append(edge[1]) ※트리도 그래프의 일종이다-! 깊이 우..

알고리즘 2021.01.16
728x90