[이분 탐색] 백준 실버3 2512번: 예산(Swift)
·
코테
https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net Code let n = Int(readLine()!)! var list = readLine()!.split(separator: " ").map { Int($0)! }.sorted(by:
[완전 탐색] 백준 브론즈1 10448번: 유레카 이론(Swift)
·
코테
https://www.acmicpc.net/problem/10448 10448번: 유레카 이론 프로그램은 표준입력을 사용한다. 테스트케이스의 개수는 입력의 첫 번째 줄에 주어진다. 각 테스트케이스는 한 줄에 자연수 K (3 ≤ K ≤ 1,000)가 하나씩 포함되어있는 T개의 라인으로 구성되어 www.acmicpc.net Code let testCase = Int(readLine()!)! M: for _ in 0..
[BFS] 백준 실버1 2178번: 미로 탐색(Swift)
·
코테
https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 풀이과정 그래프이면서, 최단거리를 찾는 문제이기 때문에, BFS를 활용하는 것이 가장 알맞은 방법이다. BFS를 구현하기 위해선 Queue를 활용해야하기 때문에 먼저 Queue를 구현하였다. struct Queue { var memory = [T]() var index = 0 var isEmpty: Bool { memory.count < index + 1 } mutating func inQueue(element: T) { mem..
[이분 탐색] 백준 실버2 2805번: 나무 자르기(Swift)
·
코테
https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 풀이과정 첫 시도는 주어진 나무 중 가장 높은 것을 기준으로 1씩 줄여가며 답을 탐색하였다. 역시, 시간 초과!! 런타임을 줄이기 위해선 탐색 횟수를 줄어야 한다. 때문에 하나씩 줄여가는 것이 아닌 중간 값을 탐색한다. 2번 예시에 따르면 가장 높은 나무는 46 절단기의 높이 최솟값은 0이므로 초기 max = 46 / min = 0 때문에 그에 중간값인 23..
[DFS] 백준 9466번: 텀 프로젝트(Swift)
·
코테
https://www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 난이도 골드 3 사용언어 Swfit 카테고리 DFS 풀이과정 텀 프로젝트 문제는 원형 트리가 생기면 그 노드끼리 팀이 형성되고, 최종적으로 팀에 속하지 못한 노드의 수를 구하는 문제이다. 문제의 핵심은 사이클이 형성된 노드의 개수를 구하는 것이다. (사이클이 형성됐다. == 특정 노드가 2번 탐색되었다.) 때문에 visited 배열 변수를 두어 탐색이 된 노드인지 아닌지 판별한다. 탐색되지 않은 노드이..