본문 바로가기

CS/React

[c++] / static 변수 사용 이유

동적계획법 문제중에 백준 14501번 퇴사 문제를 풀다가 애를 먹은 기억이 있었다.

예전에 풀 때는 감도 못 잡고 힘들었는데

책과 함께 다시보니 풀만한 문제다.

 

퇴사 문제에 쓰이는 개념중에 static 변수랑 resize 함수가 있는데

꼭 알아둬야 할 개념이라 정리해본다.

 

1. Static 변수의 특징

 

static 변수 장점: 메모리 측면에서 효율적이다.

static 메모리 영역에 저장되어 고정된 메모리 영역을 사용하기 때문.

 

또한 속도가 빠르다. 객체를 생성하지 않고 사용가능하기 때문.

 

단점은 프로그램 종료시까지 메모리에 할당된 채로 남아있는다. heap 영역과 다르게 static 영역은 garbage collector의 관리를 받지 않기 때문. static 변수의 개수가 많아지면 프로그램의 수행의 악영향을 줄 수 있음. 객체지향적이지 못하다는 단점도 있음. 자바의 객체지향적 기능을 사용하는 것도 방해함.

static 사용예시

2. resize 함수

vector <string>에 포함된 함수. 벡터 크기 변경, 요소 추가 또는 제거에 사용됨.

벡터의 크기를 동적으로 조정하는 방법을 제공함.

 

resize 함수의 사용

다이나믹 프로그래밍을 공부 중인데 생각보다 재밌다.

썼던 것을 또 쓴다는 dp의 개념이 신기하기도 하고.

메모리를 효율적으로 활용하려고 고민하는게 재밌다.

 

저번에 scpc 대회 참여하다가

점화식 두개를 배타적으로 작성하지 못해서 틀렸는데 (맞왜틀까지도 못감..ㅠ)

항상 조건 몇개를 서로 겹치지 않게 작성하는 연습을 더 해야겠다.

 

조건을 겹치지 않게 해야 한다는 걸 고민하다보니

코드도 글쓰기도 마찬가지라는 생각이 든다.

1학년 때 미디어글쓰기 수업에서 교수님께서 항상 글을 쓰기 전에는

내가 무슨 글을 쓰고 어떻게 표현할 건지 문단 구성까지 체계적으로 잡고 시작해야 한다고 하셨는데,

여기서 문단의 주제는 절대로 중복되지 않아야 좋은 글이 나온다고 강조하셨던 기억이 난다.

 

코드도 글도 참 재밌다


여담

영국 1년 교환 마치고 한국 돌아온지 한달

요새는 코틀린 개인프로젝트 준비하고 c++ 코테 준비중. 

원래 파이썬으로 많이 연습해놨었는데 학교 알고리즘 과목이 c++로 진행된다고 하고

나도 영국에서 c++ 배우고 돌아와서 c++코테 풀이들을 보니 파이썬보다 c++이 더 편하다는 생각이 들었다

 

그래서 요새는 알고리즘 과목 예습할 겸 do it c++ 알고리즘 책으로 코테 공부중.

인프런에 do it c++ 알고리즘 강의도 있으니 추천드립니다