Recurrent Relation(재귀 관계) 알고리즘에서 특정한 패턴이나 규칙에 따라 값을 반복적으로 계산하는 방법을 나타내는 수학/프로그래밍적 표현. 주로 재귀적인 방법을 사용하여 문제를 해결하거나 순환적인 구조를 다룰 때 사용 예시: 피보나치 수열 피보나치 수열은 재귀 관계를 사용하여 정의된다. F(n) = F(n-1) + F(n-2) ex) F(6)를 계산하려면 F(5)과 F(4)를 계산해야 하는 방식임. F(5)도 마찬가지이다. F(4)와 F(3)을 계산.. def fib(n: int) -> int: if n
문제 Given an m x n 2D binary grid. grid which represents a map of '1's (land) and '0's (water), return the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water. 섬은 수평과 수직으로 땅이 연결되어있고, 물로 둘러싸여있는 것으로 가정함. 또한 grid 네개의 가장자리는 모두 물로 둘러싸여있다는 것을 가정. 제약조건 m == grid.le..
문제 Given the root of a binary tree, return its maximum depth. A binary tree's maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node. 주어진 이진트리의 최대 깊이를 찾는 문제 레벨 오더는 BFS와 유사한 방식으로 구현이 됨. 일단 queue로 시작하여 첫번째 root 노드에 대해 큐에 인큐를 함(이 노드에 곧 방문할 예정이라는 의미) 왼쪽 오른쪽에 있는 하위(child) 노드들에 대해 level by level로 방문 depth가 몇인지를 기록해야함 -> 노드들 저장할 때 노드의 값 뿐만 아니라 노드가 ..
Binary 트리 하나와 해당 트리에 속한 두 개의 노드가 주어진다. 이 때, 두 노드의 공통 조상 중 가장 낮은 Node 즉, Lowest common ancestor 를 찾아라. 제약 조건 2
문제 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수 solution을 작성하라. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하라. 제한사항 arr은 자연수를 담은 배열 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 이다. divisor는 자연수 array는 길이 1 이상인 배열 입출력 예 arr divisor return [5, 9, 7, 10] 5 [5, 10] [2, 36, 1, 3] 1 [1, 2, 3, 36] [3,2,6] 10 [-1] 풀이 return의 값이 숫자의 오름차순으로 정렬되어 있기 때문에 sorted() 함수로 배열 내 숫자들을 정렬시켜준다. func so..
문제 어떤 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어진다. 실제 정수들의 합을 구하여 return 하도록 함수를 완성하라 제한사항 absolutes의 길이는 1이상 1000이하 (absolutes의 모든 수는 각각 1이상 1000이하) signs의 길이는 absolutes의 길이와 같음. (signs[i]가 참이면 absolutes[i]의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미한다.) 입출력 예 absolutes signs result [4,7,12] [true,false,true] 9 [1,2,3] [false,false,true] 0 풀이 func solution(_ absolutes:[Int]..
문제 solution 함수는 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 한다. 제한 조건에 만족하는 함수 solution을 완성하라 제한조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 입출력 예 x n answer 2 5 [2,4,6,8,10] 4 3 [4,8,12] -4 2 [-4, -8] 풀이 처음 코드에서 몇 줄 더 줄일 수 있으면 줄이는게 나을 것 같아서 삼항 연산자를 사용하여 풀이해보았다. func solution(_ x:Int, _ n:Int) -> [Int64] { var answer: [Int64] = [] for _ in 0.. [Int64] { var answer: [I..
문제 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가린다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성하라. 제한 조건 phone_number는 길이 4 이상, 20 이하인 문자열입니다. 입출력 예 phone_number return 01033334444 *******4444 02777888 *****888 풀이 enumerated() 메서드를 사용한 풀이입니다. 유저 이메일이나 휴대폰번호 마스킹 처리 할 때 자주 쓰여서 풀기 크게 어렵지는 않았지만.. 뭔가 세련된 풀이는 아닌 것 같아서 다른 분들 코드도 잘 분석해봐야겠네요. 생각해보니까 ..