본문 바로가기

알고리즘 공부28

[백준] 부분수열의 합 - 1182번 문제 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 백트래킹으로 접근 가능한 문제이다. 내가 백트래킹으로 풀려고 하는 문제의 특징은 1. 가능한 케이스들을 체크해주는 완전탐색의 성격 2. 특정 조건에서 더이상 체크해줄 필요가 없는 특징이 있다. 답이 되는 리스트들은 그 원소의 수가 다르거나, 같더라도 다른 원소를 포함하고 있을 것이기에, 현재의 index값을 가지고 포함시킬지, 포함시키지 않을 것인지를 체크.. 2023. 12. 3.
Linked List 구현하기 선형적인 특징을 가진 Linked List 구현을 해보게씀다..! 선형적이라는 것은 선처럼 일자로 데이터의 배열이 되어 있다는 것이죠! Linked List를 구현하기 위해선 데이터가 되는 Node를 우선 구현해야하고, 그 노드들을 탐색하며 데이터를 추가하거나, 지우기 위한 manager 역할을 하는 Linked List를 만들어 줄껍니다! ## 기본적인 Linked List를 알고 있다고 가정하고 만들게씀다! 우선 Linked List에 필요한 Node는 아래와 같이 자신의 데이터를 가지고 있고, 자신 다음의 Linked된 데이터를 가지기 위한 next를 가지고 있어야 합니다! 위와 같은 모습을 만들어주기 위해 Node를 우선 구현해 줍시다! class Node { var data: T var next.. 2023. 1. 16.
Queue 구현하기 Stack에 이은 Queue 구현입니다! Queue는 FIFO(First In First Out) 혹은 LILO(Last In Last Out)이라는 특징을 가진 자료구조입니다. Stack의 경우에 들어오는 데이터들이 쌓여서 위에부터 걷어내는 자료구조였다면, Queue는 먼저들어온 놈을 나중에 들어온 놈과 상관 없이, 먼저 내보낸다~ 라는 겁니다. Queue의 구현요소로는 1. Queue안에 있는 현재 데이터 갯수 2. Queue가 비었는지 확인 할 수 있는 Bool값 3. Queue에 데이터를 넣는 enqueue() 4. Queue에서 데이터를 빼는 dequeue() 처럼 크게 4가지 정도가 있습니다! 바로 구현해볼까요?! struct Queue { var queue: [T] = [] var count.. 2023. 1. 11.
Stack 구현하기 자료구조(Data Structure)를 공부하고, 복습하기 위해 앞으로 정리를 하겠습니다..!! 그 첫번째로는 Stack!! FILO(First In Last Out) 혹은 LIFO(Last In First Out)을 만족하는 데이터 저장하는 방법이라고 생각하면 됩니다! Stack의 구현 요소로는, 1. 현재 stack안의 데이터 갯수 2. 현재 stack이 비었는지를 파악할 수 있게 해주는 Bool값 3. stack에 값을 추가 할 수 있는 push() 함수 4. stack에서 값을 꺼내는 pop() 함수 정도가 됩니다! Stack 구현을 해볼까요? struct Stack { var stack: [T] = [] var count: Int { return stack.count } var isEmpty: .. 2023. 1. 10.