본문 바로가기

프로그래머스33

[Swift][프로그래머스][브루트포스] 괄호 변환 요구능력 재귀함수에 대한 이해 문제풀이 이 문제는 쪼개서 이해하면 이해가 잘되고 풀리게된다. 문제에서 주어진 절차를 무시할경우 삽질하게 되니 주의.. 1) 균형잡힌 괄호문자열 u와 v로 분류 균형잡힌 괄호문자열을 u와 v로 분류해준다. "("괄호의 개수는 leftCount, ")"괄호의 개수는 rightCount로 계산해주었다. leftCount와 rightCount가 같아지면 그건 균형잡힌 괄호문자열이 된다. func seperate(_ p: String) -> (String, String){ var leftCount = 0 var rightCount = 0 let pArr = Array(p) var u = "" var v = "" for i in 0.. String{ var result = "" if.. 2022. 5. 3.
[Swift][프로그래머스][이분탐색] 입국심사 요구능력 이분탐색 문제풀이 시간을 이용하여 이분탐색을 진행한다. 맨처음은 0분으로 설정했고, 가장 오래걸리는 시간은 times배열에서 심사하는데 가장오래걸리는사람 * n을 해주면된다. left와 right를 비교해가며 이분탐색을 진행한다. 후기 이분탐색은 처음써보는데 쓸만한 알고리즘인거같다. 코드 import Foundation func solution(_ n:Int, _ times:[Int]) -> Int{ let time = times.sorted() var left = 0 var right = n * time.last! while left = n{ right = mid - 1 }else if people < n{ left = mid + 1 } } return left } 2022. 5. 3.
[Swift][프로그래머스][DP] N으로 표현 요구능력 DP 문제풀이 이 문제는 N을 이용해서 number를 만드는데 N을 최소개수로 사용해서 number를 만들때 몇개를 써야하는지를 묻는문제이다. DP를 생각하게된 이유? 카테고리가 DP로 분류되어있다. 예제를 보자. 12 = (55 + 5)/5 가 있다. 이게 5를 4번 사용한것이라고한다. 그렇다면 55는 5를 2번사용했다는 말이되는데, (55 + 5)는 5를 3번 사용한것이다. DP문제를 조금 풀어봤으면 감이 올것이다. 현재 이 식은 dp[4] = dp[3] + dp[1]과 같은 형태구나 라는것을.. 사실, dp는 다른 알고리즘 문제들과는 조금다르게 감각(?)이 필요한 문제같다. 그래서 다양한문제를 많이 접해봐야하는데, 만약 이런감이 안잡힌다면, DP문제를 많이 풀어보기를 추천드립니다. 이 문제.. 2022. 5. 2.
[Swift][프로그래머스][그래프] 가장 먼 노드 요구능력 넓이우선탐색(BFS) + 그래프 문제풀이 항상 그래프문제에서는 간선이 주어지면 인접리스트를 만들어야된다. 나는 graph 프로퍼티에 2차원배열로 인접리스트를 만들었다. 이렇게 만들면 graph[1] = [2, 3]과 같이 1번노드는 2번과 3번과 연결되어있다고 저장할 수 있다. 여기서 1번노드를 타고 2번노드를 들어가면 그대로 1번이 또 있게된다. 이 부분은 visited로 방문처리를 함으로써 재방문하지 않게해줄것이다. 문제에서 최단경로로 이동해야된다고 했다. 최단경로하면 가장 먼저 생각나는 알고리즘은 BFS이다. BFS를 사용해서 노드를 탐색하는데, 1번노드에서 가장 먼 노드의 개수를 찾아야되므로, maxCount변수에 가장 먼 거리를 저장해줬다. moveCntArr에는 거리에있는 노드를 구해.. 2022. 5. 2.