![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bdwTCV/btqJeuejQOh/JtxJFJ5YQv2VLVkm4ICfeK/img.png)
안녕하세요 Ick입니다! 오늘은 iOS에서 앱을 개발할 때 여러 개의 작업을 동시에 수행할 수 있도록 해주는 동시성 프로그래밍에 대해 알아보려고 합니다. 동시성 프로그램의 이론적인 내용은 여기를 참고해주세요! 이번 글에서는 동시성 프로그래밍을 직접 구현해보는 것만 해보려고 합니다! iOS에서 동시성 프로그래밍을 구현하기 위해서 Apple에서는 GCD라는 것을 만들어뒀습니다. 이는 직접 스레드를 만들어서 작업을 수행하는 것이 어렵고 문제를 발생할 수 도 있기 때문에, 시스템에서 자동으로 수행해주도록 해 준 것이라고 볼 수 있습니다! 저희는 이렇게 만들어진 GCD를 사용해서 동시성 프로그래밍을 할 수 있습니다! 그럼 사용해보기 전에 반드시 알아야 할 용어들만 간단하게 짚고 넘어가도록 하겠습니다. 동기(Syn..
문제 링크 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나..
안녕하세요~ Ick입니다. 오늘은 최소 비용 신장 트리에 대해 알아본 글에 이어 최소 비용 신장 트리의 한 종류인 크루스칼 알고리즘을 직접 구현해보려고 합니다. 자세한 설명은 여기를 참고해주세요! 크루스칼 알고리즘 (Kruskal Algorithm) 위의 링크로 가시면 크루스칼 알고리즘에 대한 자세한 설명을 볼 수 있지만 간단하게 요약하면 이렇습니다. - 음수 가중치가 없는 무방향 그래프에서 모든 정점을 최소의 비용으로 연결하는 방법. - 이 때 사이클이 발생하면 안 된다. - 크루스칼 알고리즘은 가중치가 작은 간선부터 확인하는 알고리즘이다. 그런데 사이클이 발생한 것을 어떻게 알 수 있을까요?.? Union Find 여기서 사이클을 확인하는 방법에 사용되는 개념이 Union Find(합집합 찾기)라는 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cDpBgd/btqIROwqrPJ/rAXJauFKSW4SHqNQT3m7SK/img.png)
안녕하세요 Ick입니다 ^~^ 오늘은 스토리보드 없이 테이블 뷰를 만들어 보는 것을 해보려고 합니다. 스토리 보드 없이 앱을 개발하는 기본적인 세팅은 여기를 참고해주세요! 이 글은 저 링크의 세팅을 마쳤다고 가정하고 진행하겠습니다! 우선 테이블 뷰를 사용하기 위해선 최소한으로 아래와 같은 것들이 필요합니다. 1. UITableView 2. UITableViewCell 3. UITableViewDataSource 이 세 개만 있으면 테이블 뷰를 사용할 수는 있습니다. 그럼 이 세 개만 가지고 테이블뷰를 만들어 보겠습니다!.! 그럼 아마 이 화면과 비슷한 화면일 거예요! 여기서 저는 UIViewController를 상속받는 클래스로 시작하려고 합니다. 사실 UITableViewController 클래스를 상..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bj9l8s/btqIM7paCyU/Eb6bl2e7QYslyTkZKhOnC0/img.jpg)
안녕하세요! Ick입니다. 오늘은 가중치가 음수가 아닌 그래프에서 하나의 노드로부터 다른 노드들까지의 최단거리를 알 수 있는 다익스트라 알고리즘에 대해 알아보려고합니다. 다익스트라 알고리즘을 그냥 있는 그대로 나타내는 방법과 우선순위 큐를 사용하는 방법이 있는데요... 저는 우선순위 큐를 사용한 다익스트라 알고리즘을 이해하는데 정말 오래 걸렸습니다.ㅠ,ㅠ 그래서 다신 까먹지 않기 위해 글을 써보려고 합니다! 다익스트라 알고리즘 - Dijkstra 우선 다익스트라 알고리즘은 간선의 음수인 가중치가 없는 그래프에서만 사용할 수 있습니다. 여기서 방향 그래프, 무방향 그래프는 상관이 없습니다. 또한 하나의 노드에서 다른 모든 노드의 최단거리를 구하는 알고리즘이란 것을 기억해야 합니다!! 위의 그래프로 다익스트..
문제 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 10 이하의 자연수이다. 입력 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. 셋째 줄부터 E개의 줄에 걸쳐 각 간선을 나타내는 세 개의 정수 (u, v, w)가 순서대로 주어진다. 이는 u에서 v로 가는 가중치 w인 간선이 존재한다는 뜻이다. u와 v는 서로 다르며 w는 10 이하의 자연수이다. 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수도 있음에 유의한다. 출력 첫째 줄부터 V개의 줄..
문제 링크 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토� www.acmicpc.net 문제 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향..
안녕하세요 Ick입니다. 오늘은 여러 정렬 알고리즘 중 힙 정렬에 대해 공부했고 그에 대한 내용을 정리해볼까 합니다! 힙 정렬 (Heap Sort) 우선 정렬 알고리즘에는 버블 정렬, 병합 정렬, 퀵 정렬 등 여러 방법이 있는데요, 힙 정렬은 그중 시간 복잡도 O(N*logN)의 성능을 보이는 정렬 알고리즘입니다! 이러한 힙 정렬을 이해하기 위해선 힙(Heap)이라는 개념을 이해하셔야 합니다. 가장 중요한 것은 완전이진트리구조를 갖는다는 것입니다. 힙에는 최대 힙, 최소 힙이 있는데 최대 힙은 부모 노드가 자식 노드보다 값이 큰 힙을 말하며, 최소힙은 부모 노드가 자식 노드보다 값이 작은 힙을 말합니다. 그림으로 힙을 살펴보면 위와 같습니다. 최대 힙같은 경우엔 부모 노드가 자식 노드보다 커야 하므로 자..
- Total
- Today
- Yesterday
- 코테
- Apple
- 동시성
- OS
- 테이블뷰
- 프로그래밍
- design
- 코딩테스트
- Publisher
- BFS
- 앱개발
- operating
- 알고리즘
- Combine
- mac
- IOS
- dfs
- 백준
- 스위프트
- 아이폰
- OSTEP
- 문법
- System
- document
- 자료구조
- pattern
- DP
- Swift
- Xcode
- operator
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |