알고리즘 코드 4

4. 작은 것부터 풀어보기 (DP)

알고리즘으로 생각하기 - 양성봉 참고 백준 문제를 풀다가 알고리즘 풀이가 잘 기억이 나지 않아서교과서에 있는 알고리즘 코드를 외우기 위해 작성 작은 것부터 풀어보기설명문제를 작은 것부터 풀어본다 → 작은 문제들을 먼저 풀어서 그 해를 이용하여 문제 해결→ 동적 계획 작은 문제: 원래 주어진 문제와 같은 문제, 작은 문제를 부분 문제라고 함 가장 긴 증가 순서설명숫자가 일렬로 나열되었을 때 가장 긴 증가 순서를 찾아보자.증가 순서는 숫자들이 반드시 이웃해야만 할 필요 X[5, 2, 8, 6, 4, 6, 1, 9, 3]에서 [5, 8, 9], [5, 6, 9], [2, 4, 6, 9] 등 전부 증가 순서가장 긴 증가 순서는 [2, 4, 6, 9]이다. 문제를 다른 형태의 문제로 바꾸어 생각하기 → 그래프 만..

알고리즘 코드 2024.07.17

3. 욕심내어 풀어보기 (greedy)

알고리즘으로 생각하기 - 양성봉 참고 백준 문제를 풀다가 알고리즘 풀이가 잘 기억이 나지 않아서교과서에 있는 알고리즘 코드를 외우기 위해 작성 태스크 스케줄링1. 구간 스케줄링 설명n개의 태스크와 1개의 프로세스가 있을 때, 수행 시간이 겹치지 않게가장 많은 태스크들을 수행하는 방법단, 각 태스크는 시작과 종료 시각을 가진다. 시간 복잡도정렬 O(nlogn) + task검사 O(1) = O(nlogn) 알고리즘[1] 종료시각으로 정렬한다.[2] 가장 일찍 종료하는 동아리를 선택한다.[3] 다음 동아리의 시작 시각이 직전에 선택된 동아리의 종료 시각 이전이면     다음 동아리를 포기하고, 이후이면 다음 동아리를 선택한다. 코드a = [['지역봉사회', 8, 13], ['서예회', 9, 11], ['토론회..

알고리즘 코드 2024.07.16

2. 나누어 풀어보기

알고리즘으로 생각하기 - 양성봉 참고 백준 문제를 풀다가 알고리즘 풀이가 잘 기억이 나지 않아서교과서에 있는 알고리즘 코드를 외우기 위해 작성 선택 정렬설명해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 그 위치에 어떤 원소를 넣을지 선택하는 알고리즘 시간 복잡도O(n^2) 알고리즘[1] 주어진 배열 중에 최소값을 찾는다.[2] 그 값을 맨 앞에 위치한 값과 교체한다. (pass)[3] 맨 처음 위치를 뺀 나머지 배열을 같은 방법으로 교체한다.[4] 하나의 원소만 남을 때까지 위의 1~3 과정을 반복한다. 코드def selection_sort(arr):    for i in range(len(arr) - 1):        min_idx = i        for j in range(i + 1, le..

알고리즘 코드 2024.07.04

1. 순환과 기본적인 알고리즘

알고리즘으로 생각하기 - 양성봉 참고 백준 문제를 풀다가 알고리즘 풀이가 잘 기억이 나지 않아서교과서에 있는 알고리즘 코드를 외우기 위해 작성 순환 팩토리얼def factorial(n):    if n == 1:        return 1    else:        return n * factorial(n-1)    print(factorial(5))5 * 4 * 3 * 2 * 1 팩토리얼 반복문factorial = 1for i in range(1, 6):    factorial *= iprint(factorial)1 * 2 * 3 * 4 * 5 팩토리얼 계산은 순환 사용보다 반복문 이용하는 것이 메모리를 훨씬 적게 사용한다. 순차 탐색설명리스트에 값이 있고, 원하는 값을 첫 번째부터 비교하면서 그 ..

알고리즘 코드 2024.07.02