알고리즘 4

[백준/파이썬] 2579 계단 오르기 - 다이나믹 프로그래밍

➰ 2579번 계단 오르기 💡 구현 아이디어 이 문제는 다이나믹 프로그래밍으로 풀이했는데, 먼저 다이나믹 프로그래밍에 대해 알아보겠다. 1. 다이나믹 프로그래밍이란 다이나믹 프로그래밍은 메모리를 잘 사용하여 수행 시간 효율성을 비약적으로 향상시키는 방법이다. 이미 계산된 결과(작은 문제)는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 한다. 2. 다이나믹 프로그래밍 구현 방법 다이나믹 프로그래밍 구현 방법은 크게 두 가지가 있다. 1) Top-Down, 하향식 방식 큰 문제를 해결하기 위해 작은 문제를 호출하는 방법으로 재귀 함수를 이용하여 코드를 작성한다. 한 번 계산한 결과를 메모리 공간에 메모하는 기법이다. 메모이제이션(Memoization) 방식이라고도 하며 재귀함수를 이용한다. 정확히 말..

Algorithm 2023.01.25

[백준/파이썬] 2751 수 정렬하기2 - 합병 정렬 구현하기

➰ 2751번 수 정렬하기2 ▪ 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. ▪ 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. ▪ 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 💡 구현 아이디어 이 문제는 당연히 sort() 함수를 사용하여 해결하는 것이 가장 간단하고, 그게 맞는 방법이다. 이 풀이는 그저 합병 정렬 알고리즘을 연습하기 위함이다. 🔸 합병 정렬 (Merge sort) 합병 정렬은 분할 정복(divide and conquer) 방식으로 설계되었다. 한 번에 ..

Algorithm 2022.09.25

[백준/파이썬] 2839 설탕 배달 - 다이나믹 프로그래밍

➰ 2839번 설탕 배달 ▪ 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. ▪ 입력 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) ▪ 출력 상근이가 배달하는 봉지..

Algorithm 2022.08.30

[백준/파이썬] 1300 K번째 수 - 이진 탐색

➰ 1300번 K번째 수 ▪ 문제 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B의 인덱스는 1부터 시작한다. ▪ 입력 첫째 줄에 배열의 크기 N이 주어진다. N은 105보다 작거나 같은 자연수이다. 둘째 줄에 k가 주어진다. k는 min(109, N2)보다 작거나 같은 자연수이다. ▪ 출력 B[k]를 출력한다. 💡 구현 아이디어 문제는 간단하게 NXN의 2차원 배열인 A에서 k번째로 큰 수를 찾는 코드를 작성하면 되는 것이다. 이진 탐색 알고리즘을 이용해 효과적으로 처리할 수 있는데, 이렇게 판단한 근거는 다음과 같다. 1) 문..

Algorithm 2022.08.30
반응형