https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net 순서와 상관없이 들어가 있는 숫자가 동일하지 않는 수열을 출력하는 문제. N과 M 문제를 풀었다면 쉽게 풀만한 문제 import Foundation while true { var inputArr = readLine()!.split(separator: " ").map{ Int($0)! } if inputArr[0] == 0 { break } var input = inputArr input..
나오게 된 이유 앱이 복잡해짐에 따라 controller는 많은 일을 하게 되는데, controller가 복잡해짐에 따라, indexPath로 셀에 넣을 데이터를 지정하는 방식은 오류를 불러일으킬 가능성이 높음. 데이터는 시간에 따라 변하고, UI는 이런 데이터가 변하는 것을 동기화해야 하는데, 이는 오류가 발생하기 쉬운 접근 방식이므로, 이를 해결하기 위해 도입되었다. Snapshot UI의 상태이며, DiffableDatasource는 이 snapshot을 이용하여 UI를 업데이트 한다. apply의 인자값으로 전달 collectionView/tableView를 업데이트한다. 각 섹션이나 데이터는 서로를 구분할 수 있는 고유한 식별자가 있어야 하는데, 이를 위해 enum을 사용하거나, hashable..
https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 문제 요약: 1~9까지의 서로 다른 숫자로 이루어진 3자리 숫자가 목표 수 입력으로는 3자리 숫자와 스트라이크, 볼의 개수가 주어짐 입력된 값을 토대로 정답이 될 수 있는 숫자의 개수를 묻는 문제 풀이 과정: 서로 다른 숫자로 이루어진 수만이 들어가므로 순열을 이용해서 서로 다른 숫자로 이루어진 3자리 가능한 숫자 배열을 구함. 입력을 받을때마다 가능한 숫자 배열을 반복문으로 돌면서 입력된 수와 ..
나오게 된 이유 iOS6에서 출시된 UICollectionViewLayout을 통한 추상화로 인해 LineBasedLayout으로 레이아웃을 쉽게 할 수 있었으나, 시간이 지나면서 점점 복잡해짐. 따라서 기존 lineBasedLayout을 사용하지 않고 사용자 정의 레이아웃을 구축해야 하는데, 이를 구현하는 데는 까다로워 이를 위해 나온 레이아웃이 Compositional Layout임. CompositionalLayout 기본 구성 Layout: 콜렉션 뷰의 레이아웃 Section: 각 섹션 Group: 각 섹션의 행. 앞으로 반복하게 될 반복 구조, 항목의 열 또는 행을 나타냄. item: 콜렉션 뷰의 셀 크기 정의 각 요소의 크기를 지정하기 위해 Compositional Layout은 NSColle..
결론부터 말하자면 lazy와 weak를 동시에 사용할 경우 객체가 즉시 해제되어서 정상적으로 작동할 수 없으므로 컴파일 오류가 뜬다. lazy 프로퍼티 lazy 프로퍼티는 처음 객체가 생성될때 초기화 되는 것이 아닌 해당 프로퍼티가 사용될 때 초기화 되는 프로퍼티 weak 해당 프로퍼티가 약한 참조로 Reference Counter를 올리지 않게 되며, 해당 객체가 런타임 도중 할당이 해제되면 해당 프로퍼티는 nil값으로 변경된다. lazy 와 weak를 같이 쓴다면 class B { var hello = "Hello" } class A { lazy weak var b: B? = B() func asd() { print(b!.hello) } } let a = A() 이런 코드가 있다고 해보자. 여기서 A..
데이터 링크 계층: 이웃한(인접한) 노드와 노드 간의 프레임 전달에 관여. 네트워크 계층: IP와 같은 두 호스트 사이의 패킷 전달에 관여. 어떤 경로를 통해 호스트에 도달하는지에 대한 라우팅이 핵심적인 기능. 전송 계층 프로토콜: 프로세스 사이의 메시지 전달에 관여. 포트 번호가 프로세스 간의 전달에 사용 전송 프로토콜 호스트 내부에서 작동하는 프로그램들에게 데이터를 전달하는 것이 주 목적. 호스트 컴퓨터까지 데이터가 전달되는 것은 네트워크 계층이 관리해 주지만, 호스트 내에서 어떤 프로그램에 데이터를 전송을 관리하는 역할 프로세스 간의 통신 클라이언트/서버 구성을 통해서 이루어짐. 대표적으로 웹브라우저와 서버의 관계. 여기서 호스트 컴퓨터 내부에서 여러 프로세스가 작동하고 있는데, 프로세스를 구분하기..