본문 바로가기

재귀함수11

LeetCode 116(Populating Next Right Pointers in Each Node, java) 0. 문제 https://leetcode.com/problems/populating-next-right-pointers-in-each-node/ Populating Next Right Pointers in Each Node - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 문제 설명 - 문제에서 완전 이진트리(root)가 주어진다. - 모든 노드는 next 속성이 있는데, 이는 우측 노드를 가리키는 포인터 역할을 한다. - 모든 노드의 next 값은 nul.. 2022. 4. 29.
LeetCode 617(Merge Two Binary Trees, java) 0. 문제 https://leetcode.com/problems/merge-two-binary-trees/ Merge Two Binary Trees - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 문제 설명 - 문제에서 이진트리 2개(root1, root2)가 주어진다. - 두 이진트리를 병합하여 하나의 이진트리를 반환하는 것이 문제의 핵심이다. 2. 문제 해설 a) 첫 번째 접근 - 이 문제는 두 트리의 노드를 탐색하여, 각 노드의 값을 병합하는 과정을.. 2022. 4. 28.
LeetCode 695(Max Area of Island, java) 0. 문제 https://leetcode.com/problems/max-area-of-island/ Max Area of Island - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 문제 설명 - 문제에서 이중 배열(= grid)이 주어진다. - 이중 배열의 값으로 1과 0이 주어지는데, 0은 바다를 의미하고 1은 땅을 의미한다. - 상하좌우로 연결된 1의 값을 계산하여, 그중 가장 큰 값(= 가장 큰 땅)을 반환하는 것이 문제의 핵심이다. - 이 문제는.. 2022. 4. 27.
LeetCode 733(Flood Fill, java) 0. 문제 https://leetcode.com/problems/flood-fill/ Flood Fill - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 1. 문제 설명 - 문제에서 이중 배열(image)과 시작점이 되는 row(= sr)와 column(= sc) 위치, 새로운 색상(= newColor)이 주어진다. - 문제에서 제공하는 시작 위치의 값과 시작 위치를 기준으로 4방향에 존재하는 요소의 값이 동일하다면, 해당 요소의 값을 newColor로 대체하.. 2022. 4. 27.
재귀 함수의 개념 및 문제 접근방식 0. 개요 - 최근 Tree 문제를 풀기 시작하면서 재귀 함수를 사용한 풀이를 많이 접했다. - 재귀 함수(= Recursion)를 사용하면 연산 속도도 빠르고 작성하는 코드 또한 간결해진다. - 그래서 Recursion을 제대로 알고 사용하고 싶지만, 감이 잡힐 것 같으면서도 잡히지 않는다. - 이와 같은 이유로 Recursion을 정복하고 싶다는 생각에 이번 포스팅을 작성한다. - 나와 같이 Recursion에 어려움을 겪는 분들에게 도움이 되기를 바란다. 1. Recursion 이란? - Recursion은 함수 내부에서 자기 자신을 다시 호출하는 형태를 가진 함수를 말한다. 2. 재귀 함수 작성 규칙 - 재귀 함수를 작성할 때 지켜야 하는 2가지 규칙이 있다. a) Base case(반복을 멈추는.. 2022. 3. 11.
백준 11729 파이썬 - 하노이 탑 이동 순서 1. 문제 링크 https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 2. 나는 어떻게 생각했는가? - 문제도 이해했고, 손으로 직접 그려가면서 풀이도 해보았다. - 그러나 규칙성을 찾고, 규칙을 코드로 구현하는 능력이 많이 부족하다는 것을 다시한번 깨닫게 하였다. - 사실 해답코드를 읽고도, 저런 규칙성으로 이 문제가 풀린다는 것이 완벽하게 이해가 가지 않는다. 3. 정답 코드 n = int(input()) def hanoi(n, st.. 2021. 8. 17.
백준 2447 파이썬 - 별 찍기 10 1. 문제 링크 https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 2. 나는 어떻게 생각했는가? - 문제는 이해했지만, 풀이가 잘 이해가 안간다. - 수학적 사고력이 많이 부족하다는 것을 느끼게하는 문제 - 지금 당장 이해가 안가는 문제를 붙잡고 있으려니, 시간이 아깝다고 생각해서 패스한다. 3. 정답 코드 def draw_star(n) : global Map if n == 3 : Map[0][:3] = Map[2][:.. 2021. 8. 17.
백준 10870 파이썬 - 피보나치 5 1. 문제 링크 https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 2. 나는 어떻게 생각했는가? def fibonacci(n): if n 2021. 8. 17.
백준 10872 파이썬 - 팩토리얼 1. 문제 링크 https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 2. 나는 어떻게 생각했는가? def factorial(n): result = 1 while n > 0: result *= n n -= 1 factorial(n) return result n = int(input()) print(factorial(n)) - 내가 작성한 코드는 재귀적이다 라는 느낌이 없다. - 재귀적이기 보다는 콜백의 느낌이 가까운 것 같다. 3. 정답 코드 def factorial(n): if n == 0: return 1 else: return n * factori.. 2021. 8. 17.