알고리즘 문제/Swift 7

[백준] 2869번 : 달팽이는 올라가고 싶다 - Swift

문제 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 코드 import Foundation var input = readLine()!.components(separatedBy: " ") let numA = Double(input[0])! let numB = Double(input[1])! let numV = Double(input[2])! var n = (numV - numA)/(numA-numB)+1 if n.truncatingRemainder(dividingBy: 1) != 0 {n = n/1 + ..

[백준] 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 코드 import Foundation let arr = readLine()?.split(separator: " ").map{Int($0)} let n = arr![0] var k = arr![1] var result = 0 var list = [Int]() for _ in 0..

[백준] 6549번 : 히스토그램에서 가장 큰 직사각형 - Swift

문제 https://www.acmicpc.net/problem/6549 6549번: 히스토그램에서 가장 큰 직사각형 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 n이 가장 처음으로 주어진다. (1 ≤ n ≤ 100,000) 그 다음 n개의 정수 h1, ..., hn (0 ≤ hi ≤ www.acmicpc.net 코드 import Foundation var list = [Int]() while(true) { let arr = readLine()?.split(separator: " ").map{Int($0)} let num = arr![0] if(num == 0){break} list = [Int](repeating: 0, count: num!)..

[백준] 2579번 : 계단 오르기 - Swift

문제 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 코드 var num = Int(readLine()!) var arr = [Int]() var dp = [Int](repeating: 0, count: num!) for i in 0 ..< num! { let input = Int(readLine()!) arr.append(input!) if i == 0{dp[0] = arr[0]} else if i == 1 {dp[1] = max(dp[0]+arr[1],..

[백준] 1463번 : 1로 만들기 - Swift

문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 코드 1년전에는 Dynamic Programming에 대해서 아는 것이 없었다. 처음에는 반복문을 통해서 C++로 풀었다. 물론 틀렸다!🤦🏻‍♀️ 이 문제는 DP로 Bottom-up 방식으로 풀어야한다. Swift로 작성한 코드는 다음과 같다. import Foundation //1463 var num = Int(readLine()!) var list = [Int](repeating: 0, count: num!+1) for i in 2..list[i/2] + 1) { list[i] = list[i/2] +..

[백준] 11729번 : 하노이 탑 이동 순서 - Swift

문제 https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 코드 var num = Int(readLine()!) var result = 1 for _ in 0..

반응형