728x90

추상적 자료형(Abstract data type)과 자료구조(Data structure)는 엄밀히 말하면 다르다.

가령 스택의 경우는 추상적 자료형이다. 그 이유는 리스트(List)는 정의만 존재하고 구현은 사용자 마음이다.

그러나 만약 누군가가 연결리스트(Linked List), 혹은 배열리스트(Array List, Vector)를 말한다면 그건 자료구조인 셈이다.

그러나 이런 구분이 애매한 녀석들도 존재하기는 한다.

스택(Stack)같은 녀석이 그 정체인데 스택은 추상적 자료형으로 분류되는게 맞으나 사실상 자료구조라고도 볼 수 있다.

왜냐하면 스택을 구현하는 방식이 배열과 연결리스트 두가지가 존재하긴 하지만 사실상 무조건 배열을 쓰는게 이득이기 때문이다.


그래서 필자의 포스팅에서는 추상적 자료형과 자료구조를 엄밀히 구분하지 않고 모두 자료구조라 논하겠다.


참고:

이 사이트의 예제 문제는 백준 사이트(https://www.acmicpc.net/)를 참조합니다.


선수 개념:

[Recursive]재귀 함수


알고리즘 문제에서 조합과 순열문제는 유명하다.

이는 다른 알고리즘에 근간이 되기도 한다. 우리는 먼저 조합을 해보도록하자.


조합에 대해서 모르는 사람은 거의 없겠지만 먼저 조합을 설명하자면

"n개의 원소에서 k개를 순서와 상관없이 뽑는 경우"이다.

여기서 중요한건 순서가 상관이 없다.

1 2 3 4 5에서 2 5를 고른 경우와 5 2를 고른 경우는 같은 경우라고 가정한다.



알고리즘에서 흔히 묻고싶은 종류는 두가지가 있다.

바로 조합의 갯수와 조합의 나열이다.

갯수를 묻는 문제와 나열의 묻는 문제는 사실상 다른 문제이다. 물론 같은 솔루션으로 푸는것도 가능은 하다.

우리는 먼저 나열 하는 법 부터 해보도록하자.



+ Recent posts