[분할정복 + 재귀] 백준 실버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..
[구현] 백준 실버5 20546번: 기적의 매매법(Swift)
·
코테
https://www.acmicpc.net/problem/20546 20546번: 🐜 기적의 매매법 🐜 1월 14일 기준 준현이의 자산이 더 크다면 "BNP"를, 성민이의 자산이 더 크다면 "TIMING"을 출력한다. 둘의 자산이 같다면 "SAMESAME"을 출력한다. 모든 결과 따옴표를 제외하고 출력한다. www.acmicpc.net 풀이과정 구현 문제이기 때문에 지문을 천천히 읽으면서 문제를 이해하려고 노력했다. 간단 정리하자면, 준현은 주식을 살 수 있는 돈이 있으면 그때그때 최대로 매수하며, 끝까지 팔지 않는다. 성민의 경우 3일 이상 연속으로 주가가 하락하면 그때 돈이 되는 만큼 풀매수하며, 반대로 3일 연속 상승하면 그때 풀매도 한다. 때문에 두개의 변수를 두어 하락과 상승일 수를 카운팅 하여..
[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..