문제 링크 9372번: 상근이의 여행 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 www.acmicpc.net 문제 상근이는 겨울방학을 맞아 N개국을 여행하면서 자아를 찾기로 마음먹었다. 하지만 상근이는 새로운 비행기를 무서워하기 때문에, 최대한 적은 종류의 비행기를 타고 국가들을 이동하려고 한다. 이번 방학 동안의 비행 스케줄이 주어졌을 때, 상근이가 가장 적은 종류의 비행기를 타고 모든 국가들을 여행할 수 있도록 도와주자. 상근이가 한 국가에서 다른 국가로 이동할 때 다른 국가를 거쳐 가도(심지어 이미 방문한 국가라도)..
안녕하세요 Ick입니다! 오늘은 iOS에서 앱을 개발할 때 여러 개의 작업을 동시에 수행할 수 있도록 해주는 동시성 프로그래밍에 대해 알아보려고 합니다. 동시성 프로그램의 이론적인 내용은 여기를 참고해주세요! 이번 글에서는 동시성 프로그래밍을 직접 구현해보는 것만 해보려고 합니다! iOS에서 동시성 프로그래밍을 구현하기 위해서 Apple에서는 GCD라는 것을 만들어뒀습니다. 이는 직접 스레드를 만들어서 작업을 수행하는 것이 어렵고 문제를 발생할 수 도 있기 때문에, 시스템에서 자동으로 수행해주도록 해 준 것이라고 볼 수 있습니다! 저희는 이렇게 만들어진 GCD를 사용해서 동시성 프로그래밍을 할 수 있습니다! 그럼 사용해보기 전에 반드시 알아야 할 용어들만 간단하게 짚고 넘어가도록 하겠습니다. 동기(Syn..
안녕하세요~ Ick입니다. 오늘은 최소 비용 신장 트리에 대해 알아본 글에 이어 최소 비용 신장 트리의 한 종류인 크루스칼 알고리즘을 직접 구현해보려고 합니다. 자세한 설명은 여기를 참고해주세요! 크루스칼 알고리즘 (Kruskal Algorithm) 위의 링크로 가시면 크루스칼 알고리즘에 대한 자세한 설명을 볼 수 있지만 간단하게 요약하면 이렇습니다. - 음수 가중치가 없는 무방향 그래프에서 모든 정점을 최소의 비용으로 연결하는 방법. - 이 때 사이클이 발생하면 안 된다. - 크루스칼 알고리즘은 가중치가 작은 간선부터 확인하는 알고리즘이다. 그런데 사이클이 발생한 것을 어떻게 알 수 있을까요?.? Union Find 여기서 사이클을 확인하는 방법에 사용되는 개념이 Union Find(합집합 찾기)라는 ..
안녕하세요 Ick입니다 ^~^ 오늘은 스토리보드 없이 테이블 뷰를 만들어 보는 것을 해보려고 합니다. 스토리 보드 없이 앱을 개발하는 기본적인 세팅은 여기를 참고해주세요! 이 글은 저 링크의 세팅을 마쳤다고 가정하고 진행하겠습니다! 우선 테이블 뷰를 사용하기 위해선 최소한으로 아래와 같은 것들이 필요합니다. 1. UITableView 2. UITableViewCell 3. UITableViewDataSource 이 세 개만 있으면 테이블 뷰를 사용할 수는 있습니다. 그럼 이 세 개만 가지고 테이블뷰를 만들어 보겠습니다!.! 그럼 아마 이 화면과 비슷한 화면일 거예요! 여기서 저는 UIViewController를 상속받는 클래스로 시작하려고 합니다. 사실 UITableViewController 클래스를 상..
문제 방향그래프가 주어지면 주어진 시작점에서 다른 모든 정점으로의 최단 경로를 구하는 프로그램을 작성하시오. 단, 모든 간선의 가중치는 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)이라는 개념을 이해하셔야 합니다. 가장 중요한 것은 완전이진트리구조를 갖는다는 것입니다. 힙에는 최대 힙, 최소 힙이 있는데 최대 힙은 부모 노드가 자식 노드보다 값이 큰 힙을 말하며, 최소힙은 부모 노드가 자식 노드보다 값이 작은 힙을 말합니다. 그림으로 힙을 살펴보면 위와 같습니다. 최대 힙같은 경우엔 부모 노드가 자식 노드보다 커야 하므로 자..
안녕하세요! Ick입니다. 약 3주 전에 개인 Riot API를 신청했고 드디어 허가가 나서 이렇게 글을 올릴 수 있게 되었습니다. 그동안 임시로 주는 API key로 iOS에서 API 사용하는 방법에 대해 익히고 있었지만.. 2일 정도 되는 유효기간 때문에 많이 불편했었습니다..ㅠㅠ 하지만 이제 개인 API key가 있으니 열심히 사용할 일만 남았군요! Riot API를 사용해서 토이 프로젝트를 만들며 공부를 할 계획입니다. 우선 아주 잘 만들어진 OPGG 앱에 있는 기능들을 제가 직접 구현해볼 생각입니다. 오늘 구현해볼 기능은 랭킹을 조회하는 기능입니다. 우선 OPGG에서 랭킹을 조회하는 화면은 아래와 같습니다. 화면에 1~4위 까지의 랭킹만 보이는데 쇼메이커 선수의 계정이 2개네요..;; 대단합니다..
- Total
- Today
- Yesterday
- Xcode
- 코테
- Swift
- pattern
- Combine
- Apple
- design
- mac
- 프로그래밍
- 동시성
- 자료구조
- 문법
- DP
- 코딩테스트
- OS
- System
- 스위프트
- document
- OSTEP
- 알고리즘
- 테이블뷰
- operator
- Publisher
- BFS
- 앱개발
- operating
- dfs
- IOS
- 백준
- 아이폰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |