본문 바로가기

전체 글65

[백준] 부분수열의 합 - 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.
어플은 몇개의 CPU 코어에서 실행되나요? Swift 언어 베이스로 만든 어플리케이션이 실제 아이폰과 같은 디바이스에서 실행될때, CPU의 단일 코어에서 실행이 될까 아니면 여러 코어에서 병렬적으로 실행이 될까? 고수준으로 발달한 HW, SW를 모두 개발하는 애플과 같은 회사들은 양쪽의 최적화가 굉장히 잘 되어 있겠죠? 하지만, 그 모든 코드와 로직들을 오픈소스로 공개하지는 않으니, Swift의 코드레벨과 Apple Document를 기반으로 위와 같은 질문에 대한 답을 추론해보도록 하겠습니다 먼저 앱을 손가락으로 눌러 실행시키게 되면, 코드 덩어리였던 어플리케이션이 메인메모리에 올라오게 되면서 하나의 프로세스로 실행되게 됩니다. 이 프로세스 즉 어플리케이션은 실행과 동시에 한개의 프로세스로 실행되고 ios의 스케쥴링 정책에 따라 어느 CPU 코.. 2023. 9. 25.
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.