본문 바로가기

Algorithm236

Swift) 백준 2798번 (블랙잭) 요구능력 : 경우의수를 전부따지는 브루트포스 알고리즘에 대해 알고있느냐 코드설명 : 입력받은 n개의 수를 모두 더해보면서 m을 넘지않고, 현재 더한 3개의 수가 이전에 구한 sum보다 크다면, 이전에 구한 sum보다 m의 값에 가깝다는 의미이므로 이 때, sum변수에 넣도록 하였다. 후기 : 브루트포스라는 이름이 어려운 알고리즘인줄 알았는데 그냥 단순한 모든경우의수를 따져보는 알고리즘이었다.. let arr = readLine()!.split(separator: " ").map{ Int($0)! } let n = arr[0] let m = arr[1] var suArr = readLine()!.split(separator: " ").map{Int($0)!} var sum = 0 for i in 0.. 2021. 8. 18.
Swift) 백준 11729번 (하노이 탑) 요구능력 : 재귀함수를 응용할 수 있느냐 코드설명 : 우선, 몇번 왔다갔다했는지 봐야되는데 그럼 count같은 변수를 넣어서 세봤자 소용이 없다. 규칙을 찾아보면 (2의 n승) -1을 하면 이동횟수가 나오게 된다. hanoi 함수의 인자 n은 우리가 입력받는 수, start는 첫번째 장대, mid는 두번째 장대, end는 세번째 장대이다. 첫번째 하노이 함수는 n-1 개의 원판을 2번째 장대로 옮기는것 두번째 하노이 함수는 남은 1개의 맨 마지막 원판(n이 3이면 3짜리원판)을 3번째 장대로 옮기는것 세번째 하노이 함수는 2번째 장대에 놓은 n-1개의 원판을 3번째 장대로 옮기는것 자세한건 저도 완벽하게 이해 못했기 때문에 디버깅보고 재귀함수라도 이해하고 가세용..(악필 이해 좀 해주세요ㅎ..) 후기 :.. 2021. 8. 17.
Swift) 백준 1002번 (터렛) 요구능력 : 원의 성질에 대해 알고 있느냐 코드설명 : 원의 내접, 외접, 접하지않는것을 이용하여 조건을 만들었다. 변수 r의 경우 두 원의 거리를 구한것이다.(중심을 기준) 후기 : 솔직히 원의 성질알아도 처음 문제보고 딱 생각해내는 사람이 얼마나 있겟느냐마는... 원으로 접근하면 그닥 어려운 문제는 아닌것같다. 원으로 접근할 수 있는 근거를 들어보자면 각각 두개의 좌표와 반지름을 주고, 두 좌표에서 주어진 거리만큼 떨어져 있는 위치에 몇개가 있을 수 있는지를 찾아야된다는 것이다. let T = Int(readLine()!)! for _ in 1...T { let arr = readLine()!.split(separator: " ").map{ Int($0)! } var r1 = arr[2] var r2.. 2021. 8. 16.
Swift) 백준 3053번 (택시 기하학) 요구능력 : 택시기하학과 유클리드기하학을 이용해서 원의넓이를 구할줄 아느냐 코드설명 : 반지름을 가지고 유클리드기하학과 택시기하학을 이용하여 결과 출력 후기 : 공식만 알고있으면 아이언티어문제인둣,, let r = Double(Int(readLine()!)!) print("\(Double.pi * r * r)") print("\(2 * r * r)") 2021. 8. 15.