Swift - 백준 11651번 좌표 정렬하기 2
·
Algorithm/Baekjoon
11650번 좌표 정렬하기 문제와 굉장히 유사한 문제입니다.https://apple-document.tistory.com/225 Swift - 백준 11650번 좌표 정렬하기 (정렬)Sort를 이용한 해결정렬을 할 때 sort 메서드 사용하면 쉽게 해결할 수 있습니다. sort 에는 $0과 $1 을 서로 비교하여 정렬할 수 있도록 구현된 메서드입니다.추가로 설명하면 sort는 O(n log n) 시간 복apple-document.tistory.com 다른 점이라고는 정렬를 하는 기준이 다릅니다. 11650 좌표를 정렬하는 문제는 x 좌표를 우선으로 정렬하였지만11651번 문제는 y 좌표를 우선으로 정렬을 하게 됩니다. 그렇기 때문에 $0.0에서 $0.1 처럼 x와 y를 서로 바꿔주기만 하면 됩니다.let..
Swift - 백준 2869번 달팽이는 올라가고 싶다 (1등코드)
·
Algorithm/Baekjoon
수학적으로 접근하면 쉽게 풀 수 있는 문제입니다 수학적으로 접근하기 위해서는 문제를 먼저 이해해야 합니다. 문제에서는 낮에는 A만큼 올라가고 밤에는 B만큼 다시 내려오면서 V미터인 나무 막대 정상을 오르려 합니다. 이때 나무 막대 정상에만 오르면 되기 때문에 오르는 날의 밤에 내려오는 높이는 고려하지 않아도 됩니다. 그렇기 때문에 na - (n-1)b = v 라는 공식을 새울 수 있게 됩니다. 이 식으로 n 을 구하면 다음과 같습니다. 이때 주의해야할 것은 만약 나누고자하는 분모와 분자가 정수로 나눠떨어지지 않으면 해당 날짜에 1을 추가해줘야 합니다. 예를들어 입력값 a = 5, b = 1, v = 6 인 경우를 생각해볼 수 있습니다v-b = 5a-b = 4정답=2이런 상황에서 해당 값이 나눠 떨어지지 ..
Swift - 백준 11050번 이항 계수1
·
Algorithm/Baekjoon
이항 계수 문제는 DP를 사용하여 해결할 수 있습니다 파스칼의 삼각형이항 계수를 사용하여 값을 구하게 된다면 아래와 같은 피라미드의 값이 나타납니다. 이를 파스칼의 삼각형이라고 하며 이 파스칼의 삼각형을 이해하게 된다면 특정 공식으로 값을 쉽게 해결할 수 있습니다. DP문제를 해결하기 위해서는 DP를 사용합니다.DP는 문제를 해결하기 위해 이전값을 기억하였다가 이후 계산에 사용하는 프로그래밍 기법입니다. for 문에서 0부터 line[0] 까지 반복합니다.line[0]은 위 그림에서 6번째 줄까지 값들을 구한다는 것을 의미합니다Swift 에서 arr[i][j] = 1 처럼 값을 추가하여 2차원 배열에 추가하려고 했지만 arr[i][j] = 1 형식은 Swift에서 지원하지 않기에 임시로 값을 담을 수 있..
Swift - 백준 2609번 최대공약수와 최소공배수
·
Algorithm/Baekjoon
최대공약수와 최소공배수는 공식을 통해 구할 수 있습니다 최대공약수최대공약수는 다음과 같이 유클리드 호제법을 사용하면 쉽게 구할 수 있습니다.a와 b를 담습니다a에는 b의 값을 넣습니다b에는 a와 b의 나머지 값을 넣습니다b가 0이되는 순간 이전 b의 값 즉 a의 값이 최대공약수가 됩니다 150과 108의 최대공약수를 예시로 풀어보겠습니다.1. 150 % 108 = 422. 108 % 42 = 243. 42 % 24 - 184. 24 % 18 = 65. 18 % 6 = 0func GCD(a: Int, b: Int) -> Int { var a = a var b = b while b != 0 { let tmp = a % b a = b b = tmp }..
Swift - 백준 2164번 카드2 (큐)
·
Algorithm/Baekjoon
while문을 사용하여 큐를 구현하였지만 시간초과가 되었으며 이를 해결해보겠습니다 문제의 코드는 아래와 같습니다. 아래 코드에서 잘못된 부분은 while문에 있습니다 var arr: [Int] = []var line = Int(readLine()!)!for i in 1...line { arr.append(i)}while arr.count != 1 { arr.removeFirst() let first = arr.first! arr.removeFirst() arr.append(first)}print(arr.first!) 문제점여기서 바로 문제는 arr.removeFirst() 입니다. 그렇다면 왜 문제가 되는가? arr는 배열이며 removeFirst() 메서드를 사용하게 된다면 ..
swift 백준 11720, 2675
·
Algorithm/Baekjoon
11720번 숫자의 합map과 reduce를 사용하면 2줄만으로도 문제를 해결할 수 있습니다.reduce는 각 배열의 요소들을 원하는 연산으로 처리할 수 있습니다._ = Int(readLine()!)!print(readLine()!.map { Int(String($0))! }.reduce(0, +)) 2675번 문자열 반복문자열의 반복을 구현하는 이 문제는 간단합니다. for문을 활용하여 각 String의 요소들을 Character로 반복하여 출력하면 됩니다.let line = Int(readLine()!)!for _ in 1...line { let tmp = readLine()!.split(separator: " ") let num = Int(tmp[0])! let str = tmp[1..
ytw_developer
'Algorithm/Baekjoon' 카테고리의 글 목록 (4 Page)