본문 바로가기

프로그래밍

[C++]용어정리 static 변수: 클래스 내에서 공유되는 변수 class Marine { static int total_marine_num;//클래스 내부에서 선언, 선언과 동시에 초기화 불가 private: ... int Marine::total_marine_num = 0;//클래스 외부에서 초기화 필요 static 함수: 객체별로 존재하는 것이 아닌 클래스별로 존재하는 함수, 객체없이 클래스에서 자체 호출 가능 static void show_total_marine(); void Marine::show_total_marine() { std::cout 더보기
[Algorithm] DP-2 동적 테이블을 작성하는 Knapsack 예제풀이이다. [Algorithm] DP-2 동적 테이블을 작성하는 Knapsack 예제풀이이다. https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다. 준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K무게까지의 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는.. 더보기
[임베디드] 심볼 SYMBOL 임베디드 레시피 블로그 요약본입니다 SYMBOL linker가 알아볼 수 있는 기본 단위 Link이후 자신만의 주소를 갖게 됨. symbol의 이름은 그 Symbol이 갖는 메모리 영역의 시작주소를 가리키는 linker만의 pointer ELF object file 내에 symbol table 존재 Linker만이 symbol을 참조하며 linker는 Symbol들을 모두 주소로 변환해서 binary로 만듬-> 실제로 메모리에 올라가지 않음 결국 자기 자신만의 주소를 갖는 단위 Global과 SYMBOL Global에는 함수, 전역변수, static변수 Local에는 나머지들 Global은 자기 자신만의 주소를 갖는다는 점에서 SYMBOL 고유 주소를 갖기 때문에 다른 파일에서도 접근 가능 RW, ZI,.. 더보기
[Algorithm] 다익스트라 알고리즘 도착지 까지 최단 거리를 구하는 다익스트라 알고리즘이다. greedy알고리즘을 통해 구하고 수학적 귀납법을 통해 증명 가능하다. "가정이 방문한 꼭짓점이 n-1일 때 성립한다고 가정하자. 이 경우에, 모든 미방문 꼭짓점에서 dist[u]가 가장 작은 u에 대해서 dist[u] = dist[v] + length[v,u]을 만족하는 변 vu를 선택한다. dist[u]는 source에서 u까지의 가장 짧은 거리로 볼 수 있다. 만약 그 경로보다 더 짧은 경로가 있고, 그 경로의 첫 번째 미방문 꼭짓점을 w라고 한다면 처음의 가정인 dist[w] > dist[u]에 의해서 모순이 생긴다. 이와 비슷하게, u로 가는 경로 중 미방문 꼭짓점을 지나지 않는 더 짧은 경로가 있고, 그 경로의 마지막 꼭짓점이 w라고 한.. 더보기
[Algorithm]그래프 입력받기 많은 알고리즘 문제들은 그래프 기반이다 그래프를 입력받는 방법은 크게 두가지가 있는데 1. 인접행렬을 이용하여 연결관계를 나타내는 방법과 2. 링크드 리스트를 통해 그래프를 나타내는 것이다. 이 중 두번째 리스트를 이용한 그래프 입력을 구현해 보았다. 문제를 풀기 위해 우선순위 큐 선언이 들어가 있는데 무시해도 좋다. 입력은 다음과 같다 노드수, 간선수 시작 노드 출발노드 도착노드 가중치 출발노드 도착노드 가중치 출발노드 도착노드 가중치 ... 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 .. 더보기
[Algorithm] dynamic programming-1 rod(막대기)문제 [메모이제이션과 동적계획법] 메모이제이션은 미리 계산한 캐시값을 이용한 최적화 기법이다. 동적 계획법은 하위 문제에서 계산한 값을 재귀 내지는 반복적으로 문제 풀이에 사용하는 기법이다. 주로 table작성(tabulation기법)을 활용 하지만 메모이제이션 방법을 사용 하기도 한다. 메모이제이션과 동적계획법은 어느 한쪽이 서로에게 속하는 관계가 아니다. [메모이제이션과 tabulation] tabuation은 bottom-up방식으로 상위 문제를 풀기위해 하위문제의 모든 값을 필요로 할떄 유용하다. memoization은 top-down방식으로 이미 푼 문제의 값을 저장하고 있는 것이다. top down의 의미는 top단의 문제부터 푼다는 의미이다. f(7)값을 구한다 치면, tabulation은 f(1.. 더보기
[Algorithm] dfs 간단 구현 (단지 번호 문제) dfs최대한 풀어서 구현해 보았다. 에러나면 row들어갈 자리에 column이 써져 있는지 잘 확인 해봐야한다. 인덱스가 array범위 안에 들어가는지 체크하는 함수를 뺄 수 있다. visited 체크하는 부분이 애매한데 단지가 아닌 곳은 visited체크하지 않고 dfs가 시작할때 visited체크를 해준다. visited체크를 스택에서 뺄때 처리할지 스택에 넣을때 처리 할지도 정할수 있는데 스택에 넣을때 체크하여 스택에 중복되는것이 없게 하는 것이 좋다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 5.. 더보기
[C++]변수 이름짓는법 https://google.github.io/styleguide/cppguide.html#Variable_Names Google C++ Style Guide Background C++ is one of the main development languages used by many of Google's open-source projects. As every C++ programmer knows, the language has many powerful features, but this power brings with it complexity, which in turn can make code more bug-pr google.github.io 해당문서를 잘 보자 더보기