Algorithm123 Swift) 백준 1463번 (1로 만들기) 요구능력 : dp의 개념을 알고있느냐 코드설명 : 다이나믹 프로그래밍의 바텀업 방식은 작은문제부터 차근차근 답을 도출해 나아가는 방식이다. 그리고 배열에 저장하는 이유는 다이나믹프로그래밍의 기본 원리중 하나인 중복되는 부분문제를 해결하기 위함이다. 2~n 까지의 모든 경우를 배열에 저장해놓고 사용함으로써 중복되는 부분문제를 해결하고 실행시간을 어마어마하게 줄일 수 있다. 만약, 10까지가는 최단경로를 구하고자 하면 2~10까지의 최단경로를 모두 구하는것이다. 1. DP방식중 Bottom-up방식으로 접근하기 위해 우선 배열을 선언하였다. 2. 3가지의 조건 중 -1을 하는 조건에는 특정조건이 없으므로 우선적으로 처리해준다. 3. 현재의 수 i가 2 or 3으로 나누어 떨어지면 2 or 3으로 나눠주는데,.. 2021. 8. 28. Swift) 백준 1476번 (날짜 계산) 요구능력 : 전체경우의 수를 따질수 있느냐 코드설명 : 전체적인 연수를 세기위한 변수 i 각각 E, S, M 변수 지구, 태양, 달의 조건을 넣어서 만족하면 1을 넣어준다. 입력받은것과 E, S, M 이 같으면 반복문을 중단한다. 후기 : 문제에 나와있는 조건만 충족하면 평이한 문제 let arr = readLine()!.split(separator: " ").map{Int($0)!} var i = 1 var E = 1 var S = 1 var M = 1 while true { if E > 15 { E = 1 } if S > 28 { S = 1 } if M > 19 { M = 1 } if E == arr[0] && S == arr[1] && M == arr[2] { break } i += 1 E += 1.. 2021. 8. 26. Swift) 백준 2309번 (일곱 난쟁이) 요구능력 : 브루트포스 알고리즘을 알고있느냐 코드설명 : result배열을 만들어서 랜덤으로 선택한 값을 가지고 있지 않으면 result배열에 저장해주고 sum에 더해준다. 그렇게 7번 더해주고 while문을 빠져나왔을 때 sum이 100이면 바깥의 while문을 탈출해준다. 왜 랜덤으로 풀었냐고 물으면 키가 모두 다르고 정답이 여러가지인 경우에는 아무거나 출력가능했기 때문이다. 후기 : 랜덤으로 풀어버렸다. var result: [Int] = [] var arr: [Int] = [] for _ in 1...9 { arr.append(Int(readLine()!)!) } while true{ var sum = 0 var j = 0 result = Array(repeating: 0, count: 7) wh.. 2021. 8. 26. Swift) 백준 2609번 (최대공약수와 최소공배수) 요구능력 : 유클리드법칙에 대해 알고 있느냐 코드설명 : 그냥 유클리드 법칙을 사용하고 최소공배수를 구해준것.. 여기 설명이 잘되어있다. (https://sectumsempra.tistory.com/77) 후기 : 유클리드법칙을 모르고있어서 여러가지 다방면으로 시도해본결과 참패했다... let n = readLine()!.split(separator: " ").map{Int($0)!} var max = n.max()! var min = n.min()! var c = 0 c = max % min while true{ if c == 0 { break } max = min min = c c = max % min } print("\(min)") print("\(min * (n[0]/min) * (n[1]/min.. 2021. 8. 25. 이전 1 ··· 18 19 20 21 22 23 24 ··· 31 다음