재귀 6

[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 후보키 with Swift

안녕하세요. 오늘은 프로그래머스 후보키 문제를 풀어보겠습니다! 후보키 문제는 여러가지 알고리즘을 섞어만든 문제인데요! 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr row&column이 max 8*20이기 때문에 어떤 방법으로해도 전략만 잘 세운다면 시간초과날 일은 없을듯합니다! 처음에는 재귀알고리즘을 이용하여 combination을 하여 후보키 후보조합을 만들어줍니다! 이 후 sort..

[프로그래머스] 소수 찾기 with Swift

안녕하세요. 오늘은 프로그래머스 소수 찾기 문제를 풀어보겠습니다. 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 이 문제는 재귀를 이용한 완전탐색을 통해 소수판별 알고리즘을 적용하여 문제를 해결 하실 수 있습니다! 우선 순서가 상관없으니 순열을 적용해야합니다. 순열은 재귀의 for문에 0부터 시작하면 순열입니다! (순서가 상관있다면 이전 index를 가져와서 index+1부터 탐색하시면 됩니다.) 또한 모두 안뽑아도 되고 모두 뽑아도 되므로 해당 숫자가 들어가있을때 한번 안들어가있을때 한번 재..

[프로그래머스] 2020 KAKAO BLIND RECRUITMENT 괄호 변환 with Swift

안녕하세요! 오늘은 프로그래머스 2레벨 괄호 변환 문제를 풀어보겠습니다! 이번 문제는 문제를 보고 살짝 겁을 먹었는데요. 문제에서 시키는대로 하면 이상없이 문제가 잘 풀리더라구요! 문제 풀이를 보시기 전에 겁먹지 마시구 한번 더 돌아가서 문제에서 시키는 대로 해보시면 좋을듯 합니다! 0. 우선 문제가 재귀 형식을 이루어져 있기 때문에 function하나를 만듭니다. 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. if w.isEmpty { return "" } 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. var balance = 0 var splitIndex = 0..

[프로그래머스] 코딩테스트 연습 Summer/Winter Coding(2019) 멀쩡한 사각형 with Swift

안녕하세요. 오늘은 프로그래머스 멀쩡한 사각형 문제를 풀어보겠습니다! 이 문제 풀다가 머리가 터질뻔했는데요... 중고딩때 도형문제를 더 공부했더라면 수월하게 풀었을듯합니다 ㅠㅠ 결과적으로 보면 풀이가 참 간단합니다! 우선 서로가 최대공약수가 없는 도형(가로지르는 선이 정수인 n,m의 (n,m)인 지점을 지나게 하지 않기 위해)에서 w+h-1이 망가지는 도형의 수이다! 그러므로 최소공배수를 구해 도형을 쪼개고 w+h-1을 구하고 최소공배수를 다시곱해 전체 블록의 갯수에서 빼시면 문제를 해결하실 수 있습니다! import Foundation func gcd(_ a: Int64, _ b: Int64) -> Int64 { if b == 0 { return a } else { return gcd(b, a%b) }..

[프로그래머스] 코딩테스트 연습 2017 카카오코드 예선 카카오프렌즈 컬러링북 with C++

안녕하세요! 오늘은 프로그래머스 카카오프렌즈 컬러링북 문제를 풀어보았습니다! 2레벨은 문제가 몇개 안되 C++문제도 같이 풀려고합니다! Swift로 풀어보고 싶었으나 어쩔 수 없죠 ㅠ 이 문제는 기본적인 탐색 문제입니다! bfs(Breadth First Search)나 dfs(Depth First Search) 중 사용하면 되는데요! 서로 장단점이 있는 알고리즘입니다! 나중에 포스팅으로 dfs와 bfs에 대해 자세히 포스팅 하도록하겠습니다! 저는 dfs로 문제를 풀었는데요! 같이한번 살펴보시죠! 우선 인자로 들어온 vector picture 를 함수 내부에서 사용하기 좋게 전역변수로 선언한 map으로 옮겨줍니다! 옮겨주면서 isVisitedMap도 같이 초기화해줍니다! for(int i = 0; i < ..

[프로그래머스] 약수의 개수와 덧셈, 3진법 뒤집기

안녕하세요! 오늘은 프로그래머스의 약수의 개수와 덧셈, 3진법 뒤집기 두문제를 풀었습니다! 둘다 문제가 간단해 한번에 포스팅하려고 합니다! ㅎㅎ 1. 약수의 개수와 덧셈 약수의 개수와 덧셈 문제입니다. 우선 약수의 개수를 구해야하죠? 약수의 개수를 구하는 함수를 구현하였는데요. 약수를 찾는 법은 간단하게는 모듈로 연산자를 이용해서 구할수 있는데요! 자신보다 작거나 같고 1보다 같거나 큰 수 중 모듈로 했을때 0이면 약수입니다! 이렇게 함수를 만들고 for문 내부에서 if-else문으로 answer에 더할지 뺄지 결정하면 됩니다! #include #include #include int calcFactorCount(int number) { int result = 0; for (int i = 1; i