본문 바로가기

Algorithm123

[Swift][BruteForce] 백준 1107번 (리모컨) 요구능력 : 조건과 브루트포스를 떠올릴 수 있는지 코드설명 : 문제의 핵심 1. +, - 버튼으로 이동했는지 2. 버튼을 눌러서 이동했는지 나는 0부터 1000000까지의 모든 채널을 다 이동해보면서 n까지 가장 조금이동해서 도달할 수 있는 경우를 저장하고 출력하는 방법을 채택했다. 자세한 설명은 코드에 주석으로 다 적어놨는데 브루트포스라서 더 이상의 설명은 필요없을것같다. 후기 : 내가 풀어본 브루트포스중에 제일 어려웠던문제,, var n = Int(String(readLine()!))! let m = Int(String(readLine()!))! var arr: [Int] = [] if m != 0 { arr = readLine()!.split(separator: " ").map{Int(String(.. 2021. 11. 23.
[Swift][Math] 백준 6588번 (골드바흐의 추측) 요구능력 : 소수와 홀수에 대한 이해 코드설명 : 문제의 핵심 1. 두개의 홀수 2. 두개의 소수 처음에는 에라토스테네스의 체로 소수부분을 모두 구해준다.(동빈나님 블로그에 아주 잘 설명되어있습니다!) var aa = Array(repeating: 0, count: 1000001) for i in 2...1000000{ aa[i] = i } for i in 2...1000000{ if aa[i] == 0{continue} for j in stride(from: i + i, through: 1000000, by: i){ aa[j] = 0 } } 저는 isGoldBach로 두 홀수 소수의 합으로 나타낼 수 있는 경우에 isGoldBach를 true로 바꿔주고 이곳을 지나지 않는다면 false로 나타낼수 없는.. 2021. 11. 22.
[Swift][DP] 백준 13398번 (연속합 2) 요구능력 : DP에 대한 이해 코드설명 : 이 문제는 연속합 문제를 선행학습 하고 오셔야 이해가됩니다. 문제의 핵심 1. 연속합 2. 수를 하나 제거할 수 있다. 3. 수를 제거하지 않을 수도있다. 이 문제는 연속합이기 때문에 연속적으로 합을 구해줘야 하는데 수를 하나 뺄수 있다. 중요한점은 꼭 왼쪽에서 부터 시작한다는 생각을 버려야 한다. 만약에 -35라는 수를 빼고 연속합을 구하고싶다면 -35를 기준으로 가장 왼쪽에있는값 10부터 6까지의 연속합과 가장오른쪽에 있는값 -1부터 12까지의 연속합을 구해주면 된다. 이렇게 하면 왼쪽부터 -35만빼고 연속합을 모두 고려할수 있는것이다. 10 -4 3 1 5 6 -35 12 21 -1 n = 정수를 입력받는 부분 arr = n개의 정수로 이루어진 수열 dp_.. 2021. 11. 22.
[Swift][프로그래머스][LV_1] 예산 요구능력 : 오름차순 정렬에 대한 이해 코드설명 : 이 문제에서 핵심 1. 오름차순 정렬 부서별로 필요한 물품을 지원해준다. 배열 d : 부서당 필요한금액 budget : 예산 우리가 구해야하는 것 : 최대 몇 개의 부서에 물품을 지원할 수 있는가 생각해보면 간단하다. 그냥 많은 부서에 지원을 해주고 싶은거면 오름차순해서 작은부서부터 차례대로 지원하다보면 가장 많은 부서에 지원하게된다. 인수로 받은 배열을 따로 오름차순정렬 해주고, 작은것부터 예산범위가 넘어가지않게 더해주면된다. 그렇게하면 최종적으로 최대 부서 개수가 나온다. 후기 : 그냥 기본적인 정렬문제인것같다. 이런게 좀더 꼬이고 꼬이면 DP문제가 될지도.. func solution(_ d:[Int], _ budget:Int) -> Int { va.. 2021. 11. 19.