알고리즘 공부/강의 - 5. 배열과 스택 :: 찬찬히 로봇 메이커
반응형

 

 

배열은 모두가 아는 배열이다. 배열을 만들어 사용하는 방법은 다양하다.

 

우선 기본적으로 함수안에 자료형을 이용하여 배열을 만들 수 있다.

 

int arr[x] = {0, };

x에는 임의의 수가 적혀있어야 한다. 배열을 생성할 때 변수를 이용해서 배열을 생성할 수 없다. 즉 x는 상수여야한다. 그래서 이러한 배열을 정적할당이라고 한다.

 

내가 원하는 만큼의 배열을 만들고 싶다면 동적할당이라는 방법을 사용해야한다. 처음보는 사람은 아마 어렵게 느껴질텐데 그냥 외우면 편하다.

int *arr = new int [x];

이 x는 변수로 만들어도 동작을 한다. 그래서 동적할당이라고 불린다. 동적할당된 배열을 사용하고 나면 꼭 delete[] arr;로 지워주어야 한다. 사실 안해도 오류는 안나지만 메모리를 잡아먹기 때문에 그렇다. 컴파일러가 친절하지 않으면 개발보드에 좋지 않을 것 같다.

 

또한 vector(벡터) 라이브러리를 사용하여 만들수도 있다. vector container 라고 한다.

#include<vector>

vector<int> str;

로 만들 수 있다. 이 벡터는 나중에 배열을 그때그때 추가할 수 있어 매우 편하다.

ex ) str.push_back('1');

printf("%c", str[i]);

이런식으로 사용할 수 있다. 생성과 사용법은 인터넷에 치면 친절히 나온다.

 

보통 크기가 작은 경우는 미리 만들어서 사용하면 편하고, 크기가 큰 경우는 벡터나 동적할당을 사용하면 편한 경우가 많다. 하지만 정확한 사용법을 외워놓지 않으면 나중에 분명 발목을 잡을 것 같다.

 

2차원 배열은 동적할당을 for문을 사용해야하므로 복잡하다. 2차원 벡터는 그나마 낫다. 제일 쉬운 것은 2차원 배열이다. 그래서 2차원 배열로 풀다가 동적할당을 써야할 것 같다면 2차원 벡터를 사용하는 편이 쉽고 빠르지 않을까 싶다. 왜냐면 벡터의 기능이 더 많기 때문이다.

 

stack(스택)은 목이 긴 그릇을 생각하면 사용법이 편하다.  목이 긴 그릇에 순서대로 넣는다고 생각하면 꺼낼 때에는 넣은 것의 역순으로 꺼내야한다.

스택 넣을 때와 꺼낼 때랍니다.

FILO(first in last out )라고도 한다. 사용법은 vector와 비슷한다.

#include<stack>

stack<int> s;

push로 값을 저장하고 pop으로 값을 빼낸다. 이 또한 vector처럼 여러 기능이 있으니 찾아서 공부하는 것이 좋다. 최근에 보았던 스택문제는 다음과 같다.

 

사용법이 어렵지는 않아서 조금만 연습하면 금방 숙달할 수 잇다.

 

 

반응형

+ Recent posts