C++ STL, 알고리즘29 c++ static 어떤 경우에는 클래스의 객체별로 변수를 따로따로 가지는 것이 너무 중복되거나 의도에 맞지 않을수도 있다.어떤 데이터 멤버가 특정 클래스에 종속되기는 하지만 객체별로 따로따로 복제본을 가지는 것은 불합리할 수 있다.이런 경우를 위해 C++에서는 static 데이터 멤버를 지원한다.static 데이터 멤버는 C에서의 전역변수와 유사하나 특정 클래스에 종속된다는 점이 다르다.class Spreadsheet{ //지면상 코드 생략protected: static int sCounter = 0;}클래스 메서드 내에서 static 데이터 멤버 접근메서드 안에서는 static 멤버를 일반 멤버 변수와 같은 방식으로 이용할 수 있다.예를 들어 생성자 안에서 스프레드 시트 객체의 고유 순번 mId를 최종 순번을 담고있는 .. 2024. 10. 2. c++ 복습을 위한 링크 https://www.tcpschool.com/cpp/cpp_intro_program 코딩교육 티씨피스쿨4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등tcpschool.com 2024. 8. 30. DP 다이나믹 프로그래밍 Dynamic Programming Dynamic Programming이란? 큰 문제를 작은문제로 나누어 푸는 문제를 일컫는 말. Dynamic Programming이란 말 때문에 어떤 부분에서 동적으로 프로그래밍이 이루어지는 찾아볼 필요는 없다. 바로 동적프로그래밍이란 말을 창조한 사람도 이것이 단지 멋있어서 부여한 이름이라고 한다. 메모이제이션 기법을 사용한다. 그것이 핵심이다. Dynamic Programming 방법 모든 작은 문제들은 한번만 풀어야 한다. 따라서 정답을 구한 작은 문제를 어딘가에 저장해 두어야 한다. 다시 그보다 큰 문제를 풀어나갈 때 똑같은 작은 문제가 나타나면 앞서 저장한 작은 문제의 결과값을 이용한다. Dynamic Programming의 조건 작은 문제가 반복이 일어나는 경우. 같은 문제는 구할 때마다 정답.. 2023. 11. 22. Greedy와 DP 알고리즘에 대한 고찰 문제를 풀면서, 깨닫는게 많아지면서 변화할 생각을 적어보고자 한다. 결국 DP의 미학은 계산한걸 또 계산하지 않겠다는 것이다. 그래서 메모이제이션이 필요한 것이다. 점화식을 구하는 것이 핵심인데, 점화식이라는 어려운 말보다 다음 껀 어떻게 구할래? 이렇게 생각하면 편할것이다. DP의 경우 N번째가 모두 정답이다. 곧, 정답만 저장된다는 것도 그 정답을 이용해 다음 정답을 이끌어내야하는 과제가 있다. 실버문제의 경우 초기식을 세우고 dp[0] 처럼 하드코딩으로 내가 정의할 수 있는 경우가 많다. 그 후, 문제를 풀때 dp[1], dp[2]는 어떻게 될지 나열하다보면, 결국 문제는 풀리기 마련이다. 골드문제의 경우 dp의 자료구조를 어떻게 정할지에 대해 고민스러웠던 경험이 있었다. dp자체에 어떤 정답을 담.. 2023. 11. 22. 이전 1 2 3 4 5 6 7 8 다음