Swift - 백준 11650번 좌표 정렬하기 (정렬)
·
Algorithm/Baekjoon
Sort를 이용한 해결정렬을 할 때 sort 메서드 사용하면 쉽게 해결할 수 있습니다. sort 에는 $0과 $1 을 서로 비교하여 정렬할 수 있도록 구현된 메서드입니다.추가로 설명하면 sort는 O(n log n) 시간 복잡도를 가집니다. 만약 $0과 $1의 값이 튜플이라면 $0.0 으로 첫번째 값, $0.1로 두번째 튜플의 값에 접근할 수 있으며 다음과 같이 문제를 해결할 수 있습니다.만약 비교하고자 하는 x 좌표가 같다면 y 좌표의 크기 비교하여 정렬을 하며만약 비교하고자 하는 x 좌표가 틀리면 x 좌표의 크기를 비교하여 정렬을 합니다.let line = Int(readLine()!)!var arr: [(Int, Int)] = []for _ in 1...line { let num = readL..
Swift - 백준 2839번 설탕 배달 (다이나믹 프로그래밍 DP)
·
Algorithm/Baekjoon
2839번 문제는 대표적인 다이나믹 프로그래밍(DP) 문제라고 할 수 있겠습니다 다이나믹 프로그래밍이란 이전에 풀어던 값을 한번 쓰고 버리는 것이 아닌 값을 저장하였다가 이후 값을 찾아내는데 있어서 또 사용하는 방식의 프로그래밍 방식입니다. 2839번 설탕 배달 문제도 마찬가지입니다. 문제 조건봉지는 3kg 와 5kg 의 설탕을 담을 수 있는 봉지가 존재합니다.최소한의 봉지로 원하는 설탕만큼을 배달해야 합니다.정확하게 N 킬로그램을 만들 수 없다면 -1 을 출력합니다.문제 해결문제를 해결하기 위해서는 먼저 작은 숫자의 출력값부터 생각해봅니다.1은 -12는 -13은 1, arr[3] = arr[3]4는 -15는 1, arr[5] = arr[5]6은 2, arr[6] = arr[3] + arr[3]7은 -1..
Swift - 백준 2292 벌집
·
Algorithm/Baekjoon
벌집은 어려워보이지만 자세히 보면 규칙이 존재합니다 벌집의 규칙이란 1 다음에는 6이 증가한 수인 7까지가 다음 라인을 구성하고 있고 그 다음 라인은 12가 증가한 19까지 존재하는 것을 확인할 수 있습니다. 이것은 무엇을 의미하느냐 1에서 6, 12, 18, 24를 계속 더한 값의 합을 구하면 문제를 해결할 수 있게 됩니다.1번째 라인: 12번째 라인: 2~73번째 라인: 8~194번째 라인: 20~375번째 라인: 38~61... 이것을 코드로 구현하면 다음과 같겠습니다.import Foundationlet line = Int(readLine()!)!var n = 6var sum = 1if line == 1 { print(1)} else { for i in 1...10000000 { ..
Swift - 백준 1929 소수 구하기
·
Algorithm/Baekjoon
1과 2를 제외한 수로 나눌 수 없는 수를 소수라고 합니다 소수에는 1, 2, 3, 5, 7, 11, 13 ... 등의 숫자들이 존재합니다. 소수인 수를 구하기 위해서는 "에라토스테네스의 체" 를 사용해서 구하는 방법을 사용해야 합니다. 에라토스테네스의 특징에라토스테네스의 체란 다음과 같은 특징을 가지고 있습니다.2를 제외한 2의 배수를 모두 지웁니다.3을 제외한 3의 배수를 모두 지웁니다.5를 제외한 5의 배수를 모두 지웁니다.7을 제외한 7의 배수를 모두 지웁니다.이후 11과 13과 같이 소수들을 제외한 해당 배수들의 수를 모두 지워줍니다.에라토스테네스의 한계에라토스테네스의 한계로는 위에서 확인했듯이 만약 1부터 120까지의 수 중에서 소수를 찾아낼 때는 2를 제외한 2의 배수와 3을 제외한 3의 배..
Swift 백준 1654 랜선 자르기 (이분탐색)
·
Algorithm/Baekjoon
시간초과 코드이분 탐색을 사용하지 않으면 다음과 같이 코드를 만들 수 있습니다.하지만 원하는 값이 나올때까지 모든 모든 경우의 수를 탐색해야 한다는 문제점이 있습니다.이렇게 코드를 작성하면 시간 복잡도가 O(log n*m) 만큼 나올 수 있으며 이는 시간초과를 일으킵니다.var line = readLine()!.split(separator: " ").map({Int($0)!})var arr: [Int] = []for _ in 1...line[0] { arr.append(Int(readLine()!)!)}for i in stride(from: arr.max()!, to: 0, by: -1) { var count = 0 for j in arr { count += (j / i) ..
Swift 백준 1546 평균
·
Algorithm/Baekjoon
Float32 비트를 사용메모리 절약이 중요한 경우, 또는 정밀도가 상대적으로 덜 중요한 경웨 사용됩니다.Double64 비트를 사용정밀도가 중요한 경우, 과학적 계산 및 대부분의 일반적인 경우에 사용됩니다. 문제 해결소수점까지 표현하기 위해서는 Double을 사용할 수 있습니다.물론 Float도 사용할 수 있겠지만 소수점이 클 경우도 존재하므로 Double을 사용하면 되겠습니다.몇개의 과목 점수를 받을 것인지 설정합니다.각 과목의 과목점수/최고점수*100 의 합 구하기구한 값의 평균 구하기var line = Int(readLine()!)!var arr = readLine()!.split(separator: " ").map { Double($0)! }var total = 0.0for i in 0..
ytw_developer
'Algorithm/Baekjoon' 카테고리의 글 목록 (6 Page)