본문 바로가기
  • 비둘기다
  • 비둘기다
  • 비둘기다

전체 글53

[Data Structure] 재귀(Recursion) ● 재귀 재귀는 순환이라고도 불리며 함수가 자기 자신을 호출하여 문제를 해결하는 것을 의미합니다. 원래 함수를 정의할 때 A함수 안에 B함수를 정의하는 것은 불가능합니다. 그러나 A함수의 정의에 B함수를 활용할 수는 있습니다. 재귀는 여기서 A함수의 정의에 A함수를 활용하는 것이라고 할 수 있습니다. 재귀를 활용하는 대표적인 예시들이 있습니다. 예를 들어 팩토리얼 함수의 구현입니다. n!을 계산하고자 할 때 우리는 이를 n * (n-1)!로 바꿔줄 수 있습니다. 그리고 우리는 또 (n-1)!을 (n-1) * (n-2)!로 바꿀 수 있습니다. 이를 코드로 구현하면 다음과 같습니다. int factorial(int n) { if(n 2->3이기 때문에 2번 출력문은 1부터 순서대로 적힐 것입니다. 다른 예시.. 2023. 4. 11.
[Data Structure] 이분 탐색(Binary Search) ● 순차 탐색 알고리즘과 시간 복잡도 탐색이란, 수많은 데이터 속에서 내가 원하는 데이터를 찾는 과정을 말합니다. 예를 들어 1부터 100까지의 숫자가 적힌 배열에서 31을 찾는 것은 탐색을 거쳐야 할 것입니다. 그중 순차 탐색이란, 처음부터 끝까지 찾고자 하는 데이터를 탐색하는 것을 말합니다. 순차 탐색 알고리즘을 구현하면 다음과 같습니다. int LSearch(int arr[], int len, int tar) { for (int i = 0; i < len; i++) { if (arr[i] == tar) { return i; } } return -1; } int main(void) { int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int length = sizeof(.. 2023. 4. 10.
[이분 탐색] 백준 2417번 (파이썬) : 정수 제곱근 n = int(input()) q = 0 t = n while q 2023. 4. 7.
[이분 탐색] 백준 10815번 (파이썬) : 숫자 카드 이 문제 같은 경우에는 카드를 하나하나 비교해야 하기 때문에 이분 탐색을 사용합니다. N = map(int, input()) my_card = sorted(map(int, input().split())) M = map(int, input()) num_card = list(map(int, input().split())) answer = [] def binary(k, my_card, start, end): mid = (start+end) // 2 if start > end: answer.append(str(0)) elif k == my_card[mid]: answer.append(str(1)) elif k > my_card[mid]: binary(k, my_card, mid+1, end) else: bina.. 2023. 4. 5.
[Computer Vision] cs231n lecture2 - Image Classification 이미지란, 숫자로 구성된 3D array로 앞에서 말한 숫자는 0부터 255까지로 이루어져 있습니다. 이미지 데이터를 분석하고 분류하는데 있어서는 여러가지 challenge가 존재합니다. 1. Viewpoint : 어느 시각에서 보느냐에 따라 달라 보이는 것 2. Illumination : 조명(밝기)에 따라 이미지가 달라 보이는 것 3. Deformation : 우리가 일반적으로 알고 있는 모습과는 다른 형태 4. Occlusion : 어딘가에 은폐, 은닉하여 알아보기 힘든 것 5. Background Clutter : 배경에 융화되어 잘 보이지 않는 것 6. Intraclass Variation : 같은 이름으로 분류되지만 그 형태가 다양한 경우 원래는 모델을 만들 때 predict하는 모델 하나만을.. 2023. 4. 5.
[이분 탐색] 백준 1789번 (파이썬) : 수들의 합 그리디 알고리즘을 활용하여 풀라고 적혀있습니다. 그리디 알고리즘이란, 실제 최적의 값을 떠나 단계 별로 가장 최고의 값을 골라가는 것입니다. 이를 문제에 활용해 본다면 당연히 작은 수들이 많아야 N이 높아지기 때문에 다음과 같이 코드를 짤 수 있습니다. s = int(input()) total = 0 num = 0 while True: num += 1 total += num if total > s: break print(num-1) 2023. 4. 5.