[DFS] 백준 실버1 11403번: 경로 찾기(Swift)
·
코테
https://www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이과정 해당 문제는 주어진 행렬을 통해 좌표의 경로를 찾는 문제이다. 먼저, 예제를 풀이하자면 위 예제를 통해 (0, 3), (1, 6), (3, 4), (3, 5), (4, 0), (5, 6), (6, 2)의 좌표가 1인 것을 알 수 있다. 이를 보기좋게 정점으로 나눠 표현하면, 0 0 -> 3 -> 4 -> 0 / 0 -> 3 -> 5 -> 6 -> 2 1 1 -> 6 -> 2 2 X 3 3 -> 4 -> 0 / 3 -> 4 -> 6..
[다이나믹 프로그래밍] 백준 실버3 2579번: 계단 오르기(Swift)
·
코테
https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 풀이과정 문제를 정리하면, 계단마다 점수가 있다. 계단은 1칸 혹은 2칸씩 오를 수 있다. 하지만, 연속된 세 개의 계단을 모두 밟을 수는 없다. 이때 얻을 수 있는 점수의 최댓값을 구해야 한다. 중요한 키워드만 정리해 보았다. 해당 문제는 DP를 활용하여 풀 수 있다. 각 계단을 올랐을 때 포인트의 최댓값을 알고 있으면 해당 포인트에 앞으로 오를 계단의 포인트를 더해주면 해결할 수 있다. 계단 수가 1번부터..
[분할정복 + 재귀] 백준 실버1 1629번: 곱셈(Swift)
·
코테
https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net Code let ABC = readLine()!.split(separator: " ").map { Int($0)! } let A = ABC[0] let B = ABC[1] let C = ABC[2] func recursion(N: Int) -> Int { if N == 0 { return 1 } if N % 2 == 0 { let r = recursion(N: N/2) return r % C * r % C } else { let r = recursion(N: (..
[그리디] 백준 실버4 11047번: 동전 0(Swift)
·
코테
https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net Code let NK = readLine()!.split(separator: " ").map { Int($0)! } let N = NK[0] var K = NK[1] var coins: [Int] = [] var result = 0 for _ in 0.. K { break } coins.append(coin) } for i in 0..
[이분 탐색] 백준 실버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..