전체 글266 [Swift][이분탐색] 백준 1654번 (랜선 자르기) 요구능력 이분탐색 문제풀이 N개의 랜선을 만들 수 있을 때, 그 중에서 최대 랜선의 길이를 구해야한다. K개의 랜선이 주어졌다. K개의 랜선의 길이를 적절하게 잘라서 N개의 랜선을 만듦과 동시에 최대 랜선의 길이를 구하는 문제이다. N개의 랜선이 만들어지는지는 이분탐색을 통해서 구하자. 우리는 N개의 랜선을 만들기 위해 "자를 수 있는 길이"를 알아야한다. 작게는 1 단위로 자를 수 있을 것이고 크게는 가장 긴 것 만큼 자를 수 있을 것이다. 그래서 start = 1, end = 입력받은 k중에 가장큰값을 사용했다. 이 길이를 기준으로 이분탐색을 해보자. 중간에 있는 이 부분이 n개인지 아닌지를 구하는 부분이다. for i in 0.. 2022. 5. 23. [Swift][투 포인터] 백준 2230번 (수 고르기) 요구능력 투 포인터, 정렬 문제풀이 포인터가 가리키고있는 위치의 값끼리 차를 구하면된다. 중요한점은 정렬을 해주지 않으면 투포인터가 성립되지 않는다. 그리고 diff >= m이 되면 우리는 최소의 차이를 구하는 것이므로 정렬되어있기 때문에 뒤로갈수록 차이는 더 커져서 볼 필요없이 break해줬다. 후기 투포인터의 응용(?)문제 코드 let nm = readLine()!.split(separator: " ").map{Int(String($0))!} let n = nm[0] let m = nm[1] var arr = [Int]() for _ in 0.. 2022. 5. 20. [Swift][구현] 백준 15662 (톱니바퀴(2)) 요구능력 구현, 큐 문제풀이 변경되기 이전의 톱니바퀴끼리 비교를 해야하기 때문에 변경되기 이전의 톱니바퀴들을 미리 저장해둔다.(beforeLoc) 처음에 재귀로 접근했다가 이상하게 빠져버려서 시간을 많이 낭비했다가 포기하고 큐로 풀게되었다. 큐로 접근해서 방문처리를 해주면 똑같은 톱니바퀴를 돌지않고, 딱 돌아야하는 톱니바퀴만 돌 수 있다. 방문처리를 해주는 이유는 예를 들어 1번부터 출발해서 4번까지 가는데 중간에 2번에서 1번과 극이 다르다면 조건을 충족하기 때문에 1번을 또 돌릴 수도 있는 경우를 방지하기 위해서이다. 재귀로도 풀리긴 하지만, 큐로 푸는것이 효율적인 것 같다. 후기 변경되기 이전의 값을 쓰는 문제에서는 변경되기 이전의 값을 먼저 저장해놓자! 코드 import Foundation let.. 2022. 5. 18. [Swift][구현] 백준 17406번 (배열 돌리기 4) 요구능력 구현 문제풀이 핵심은 순열을 이용해서 연산순서를 정해줘야한다는것이다. 배열돌리는 부분은 급하게 순열로 변경하다보니 코드가 더러워졌다.. 배열돌리는건 배열돌리기2와 동일하게 돌렸다. 시간나면 풀이올려야지.. 혹시 궁금한점있으시면 댓글달아주시면 답변드리겠습니다. 후기 어려운문제는 아니었는데 문제에서 헷갈리게 임의로 정해도된다(?)라고 적혀있어서 시간이 걸렸다.. 코드 let nmk = readLine()!.split(separator: " ").map{Int(String($0))!} let n = nmk[0] let m = nmk[1] let k = nmk[2] var arr = [[Int]]() for _ in 0.. 2022. 5. 17. 이전 1 ··· 6 7 8 9 10 11 12 ··· 67 다음