본문 바로가기

ios122

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.
Swift) 백준 17425번 (약수의 합) 요구능력 : 시간을 고려하여 TestCase문제를 풀 수 있느냐.. 문제설명 : 이 문제는 브루트포스로 접근하면 바로 시간초과가난다.. 필자가 그랬다. TestCase문제는 브루트포스로 낚시를 하기때문에 답을 미리 만들어 놓은다음 테스트케이스에 따른 결과를 도출하는게 좋다. 아래 코드를 보면 dp[i*j] += i 가 적혀있다. i는 배수를 의미한다. i가 2라고 가정해보면 2의배수에 전부 2를 더하는것이다. j는 1부터 1씩 더해진다. dp[2 * 1] += 2 dp[2 * 2] += 2 dp[2 * 3] += 2 . . . 왜 저렇게 구하는거지? 라고 하면 그냥 이게 약수 구하는데는 제일효율적 같은 연산을 여러번 반복 하지않고 한번에 하기 때문이다. 우리가 구하고자 하는수는 100만까지라서 dp[10.. 2021. 8. 25.
Swift) 백준 17427번 (약수의 합 2) 요구능력 : 약수에 대해 이해하고 있느냐 코드설명 : 정말 신박하다. 4를 생각해보자. [1], [1, 2], [1, 3], [1, 2, 4] 이렇게 1이 4번, 2가 2번, 3이 1번, 4가 1번나온다. 다른 수도 마찬가지로 이와 같은 규칙을 갖고있다. 이 규칙을 식으로 나타내보면 n / i * i가 되는것이다. 4/ 1 = 4 ; 4 * 1 = 4 4/ 2 = 2 ; 2 * 2= 4 4/ 3 = 1 ; 1 * 3 = 3 4/ 4 = 1 ; 1 * 4 = 4 4 + 4 + 3 + 4 = 15가 된다. n/i * i를 한것이다. 다른 블로그들에는 10이 많이 적혀있어서 나는 4를 예시로 들어봤다. 후기 : 시간초를 보고 혹시 이게안될까 싶었는데.. 역시나 안됐다.. 처음시도한 코드는 시간초과... 역시나.. 2021. 8. 25.