적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

분류 전체보기 568

[Swift 알고리즘] 백준 2644 촌수계산

○ DFS/BFS Silver 2 백준 2644 촌수계산 문제 여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램을 작성하시오. 입력 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호 셋째 줄에는 부모 자식들 간의 관계의 개수 m 넷째 줄부터는 부모 자식간의 관계를 나타내는 두 번호 x,y가 각 줄에 나온다. 이때 앞에 나오는 번호 x는 뒤에 나오는 정수 y의 부모 번호를 나타낸다. 각 사람의 부모는 최대 한 명만 주어진다. 출력 입력에서 요구한 두 사람의 촌수를 나타내는 정수를 출력한다. 두 사람의 친척 관계..

Algorithm/Baekjoon 2023.01.17

[Swift] Escape closure 탈출클로저란?

Escaping 클로저는 클로저가 함수의 인자로 전달됐을 때, 함수의 실행이 종료된 후 실행되는 클로저 Non-Escaping 클로저는 이와 반대로 함수의 실행이 종료되기 전에 실행되는 클로저 Escaping Closures A closure is said to escape a function when the closure is passed as an argument to the function, but is called after the function returns. When you declare a function that takes a closure as one of its parameters, you can write @escaping before the parameter’s type to in..

[Swift 알고리즘] 백준 2178 미로 탐색

× BFS Silver 1 백준 2178 미로 탐색 문제 N×M크기의 배열로 표현되는 미로가 있다. 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다. 위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다. 입력 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. 출력 첫째 줄에 지..

Algorithm/Baekjoon 2023.01.13

[Swift] Generic에 대하여

Generic은 Swift 의 가장 강력한 기능 중 하나로, Swift 표준 라이브러리의 대부분은 generic 으로 이루어져 있다. 흔히 사용하고 있는 배열과 딕셔너리가 바로 generic collection으로 제네릭의 대표적인 예이다. 타입을 특정하지 않고 함수나 타입을 구현할 수 있도록 하여, Generic을 사용하면 유연하고 재사용 가능한 코드를 작성할 수 있다. 제네릭을 정의할 때 타입 파라미터로는 placeholder type으로 T를 흔히 사용하며, 사용 시에 타입이 확정되면 실제 타입으로 대체된다. ex) 제네릭 함수 : swap, 제네릭 타입 : Array, 커스텀 Stack Generics Generic은 어떤 타입이든 넣어줄 수 있는, 유연하고 재사용가능한 함수와 타입을 작성할 수 ..

[Swift 알고리즘] 백준 2606 바이러스

○ BFS 백준 2606 바이러스 문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에는 컴퓨터의 수. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수. 이어서 그 수만큼 한 줄에 한 쌍씩 네트워크 상에서 직접 연결되어 있는 컴퓨터의 번호 쌍이 주어진다. 출력..

Algorithm/Baekjoon 2023.01.12

[Swift 알고리즘] 백준 1260 DFS와 BFS

× DFS/BFS 백준 1260 DFS와 BFS 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 출력 첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BFS를 수행한 결과를 출력한다..

Algorithm/Baekjoon 2023.01.11

[Swift] Extension에 대하여

Extension은 기존에 존재하는 class, struct, enum 혹은 protocol 타입에 새로운 기능을 추가하고, 오리지널 소스 코드에 접근이 불가한 타입들도 확장해서 사용할 수 있다. 하지만 기존에 있던 함수를 override 할 수는 없다. Extensions Extensions add new functionality to an existing class, structure, enumeration, or protocol type. This includes the ability to extend types for which you don’t have access to the original source code (known as retroactive modeling). Extensions i..

728x90
반응형