프로토콜은 자기 자신을 채택하고 있지 않다 protocol P {} struct S: P {} let arr:[P] = [S()] func genericFunc(a: [T]) -> [T] { return a } genericFunc(a: arr) // Error: Type 'any P' cannot conform to 'P' 프로토콜은 자기 자신을 채택하고 있지 않다. 따라서 제네릭의 타입 제약을 프로토콜을 채택한 것으로 제약을 걸어 두었을 때, 컴파일 시 오류가 뜬다. 즉 프로토콜 P는 프로토콜 P를 채택하고 있지 않아서 제네릭 제약조건인 P를 채택한 타입에서 걸려서 오류가 발생한다. protocol P {} struct S: P {} let arr:[P] = [S()] func nonGenericFu..
UICollectionView, UITableView는 프로젝트를 진행할 때 매우 많이 사용하고, 이 둘은 UIScrollView를 상속하고 있다. UIScrollView도 많이 사용해 보긴 했지만... 쓸 때마다 정확히 알아보지도 않고 사용해서 테이블 뷰의 페이징 기능을 구현해 보려고 할 때 좀 정확하게 알아야겠다 싶어서 알아보게 되었다. UIScrollView의 작동 방식 UIScrollView는 UIView와 크게 다르지 않다. frame이 있고, bounds가 있다. frame은 해당 뷰의 원점이 해당 뷰의 원점으로부터 얼만큼 떨어졌는지를 좌표계로 나타낸 것이고, bounds는 자기 자신의 원점을 기준으로 좌표계로 나타낸 것이다. 이때 부모뷰의 bounds의 원점을 변경 하면 자식뷰의 frame이..
라우팅은 패킷을 전달하기 위한 경로를 선택하는 과정. 라우팅을 해주는 장치가 라우터이고, 라우터는 라우팅 프로토콜을 사용하여 라우팅 테이블을 생성함. 동적 라우팅 일반적으로는 동적 라우팅 테이블로 구성. 사람의 개입 없이 라우팅 프로토콜이 자동적으로 테이블의 목적지 주소와 이웃 노드 (next hop)를 갱신해 줌. 라우팅 프로토콜의 종류 유니캐스트 라우팅 프로토콜 일반적인 라우팅 프로토콜로 목적지가 하나 경로를 선택하기 위해 어떻게 라우팅 정보를 교환하여 라우팅 테이블을 구축할 것인가를 명시 송수신 모두 하나의 시스템 멀티캐스트 라우팅 프로토콜 목적지가 동일 그룹에 속한 여러 호스트가 될 수 있음 브로드캐스팅과 다른점은 브로드캐스팅은 송신자는 하나이고 수신자는 나머지 전부이고, 멀티 캐스트는 수신자가 ..
https://school.programmers.co.kr/learn/courses/30/lessons/42628?language=swift 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 우선순위큐를 구현 할 수 있다면 쉬운 문제. 오름차순과 내림차순 우선순위 큐를 둘 다 구현하고 명령어에 따라 각 큐를 연산 한 뒤, 연산하지 않은 큐를 새로 만들어 할당하는 식으로 문제를 해결했다. import Foundation struct Heap { var elements: [Int] var sortFunction: (Int, Int) -> Bool var isEm..
패킷은 송신지에서 목적지까지 가기위해 여러 네트워크 또는 통신 장치를 거쳐 가게 된다. 여러 네트워크가 존재하는 만큼 경로또한 다양하게 존재하는데, 이때 목적지에 패킷을 전달하기 위해 어떤 경로를 통해서 가는 것이 가장 좋은지 결정하기 위해 라우팅 테이블을 사용 한다. 라우팅 테이블 목적지 IP주소와 경로가 저장되어있는 테이블. 데이터를 받은 장치는에게 패킷이 들어 옴. 패킷의 헤더를 읽어서 자신에게 온 패킷인지 확인 자신에게 온 것이 아닌경우 라우팅 테이블을 보고 다른 네트워크로 전송함 이렇게 중간에서 라우팅 테이블을 기반으로 패킷의 경로를 결정하는 장치는 스위치나 라우터가 수행 직접 전달 (direct delivery) 패킷의 최종 목적지가 전달자와동일한 네트워크에 있어 데이터를 직접 전달 간접 전달..
https://school.programmers.co.kr/learn/courses/30/lessons/86971# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 간단히 요약하면 서로 연결되어 있는 집합끼리의 개수의 차이를 구하는 문제. 보자마나 Union-Find 알고리즘을 이용하면 풀 수 있겠구나 생각이 들었다. 와이어를 하나씩 자른 모든 경우의 수에 각 그룹 송전탑의 수 차이를 완전탐색해서 풀었다. Union-Find 알고리즘을 구현할 수 있다면 막힘없이 풀 수 있는 문제라고 생각 import Foundation func calculateTw..