본문 바로가기

728x90
반응형
SMALL

알고리즘

(62)
시간 복잡도(Time Complexity) [시간 복잡도란?]시간 복잡도(Time Complexity)는 입력 크기 N이 커질수록 알고리즘이 실행되는 시간의 증가율을 의미합니다.이는 실제 실행 시간이 아닌, 입력 크기에 따른 이론적인 성능을 비교하는 데 사용됩니다.왜 시간 복잡도가 필요할까?실행 속도는 컴퓨터, 언어, 운영체제 등 환경에 따라 달라짐절대 시간보다 입력 크기 기준으로 성능을 평가하는 지표가 필요그래서 사용하는 것이 바로 점근적 시간 복잡도점근 표기법 (Asymptotic Notation)입력 크기 n이 무한히 커질 때의 알고리즘 성능을 수학적으로 표현한 것기호의미예시O(g(n))최악의 경우 (Upper Bound)O(n²), O(n log n)Ω(g(n))최선의 경우 (Lower Bound)Ω(n), Ω(1)Θ(g(n))정확한 경우..
백준 2869번 [달팽이는 올라가고 싶다](C++)-yes6686- 티스토리 백준 문제 풀이: 2869 [달팽이는 올라가고 싶다]문제 링크: https://www.acmicpc.net/problem/2869문제 설명:달팽이가 나무 막대를 올라가는데, 낮 동안에는 a미터를 올라가고 밤에는 b미터를 미끄러집니다. 나무 막대의 높이는 v미터입니다. 달팽이가 정상에 도달하는 데 걸리는 최소 날짜를 구하는 문제입니다.단, 달팽이는 정상에 도달하면 밤에 미끄러지지 않습니다.문제 해결 코드#include using namespace std;int main() { int a, b, v; cin >> a >> b >> v; int dailyClimb = a - b; if (a >= v) { cout 코드 설명핵심 알고리즘: 수학적 계산을 통해 하루에 올라..
백준 2839번 [설탕 배달](C++)-yes6686- 티스토리 백준 문제 풀이: 2839 [설탕 배달]문제 링크: https://www.acmicpc.net/problem/2839문제 설명:설탕을 N킬로그램 배달해야 합니다. 설탕 봉지는 3킬로그램과 5킬로그램짜리 두 종류만 있습니다. 최대한 적은 봉지 개수로 N킬로그램을 배달할 수 있는 최소 봉지 개수를 구하는 문제입니다. 단, 정확히 N킬로그램을 배달할 수 없다면 -1을 출력합니다.문제 해결 코드#include using namespace std;int main() { int N; cin >> N; int cnt = 0; while (true) { if (N % 5 == 0) { // 5로 나누어 떨어지면 cnt += (N / 5); bre..
백준 5800번 [성적 통계](C++)-yes6686- 티스토리 백준 문제 풀이: 5800 [성적 통계]문제 링크: https://www.acmicpc.net/problem/5800문제 설명:여러 반의 학생들의 성적이 주어졌을 때, 각 반마다 최고 점수, 최저 점수, 그리고 점수 간격 중 가장 큰 값을 계산합니다. 이를 통해 각 반의 성적 통계를 출력합니다.문제 해결 코드#include #include using namespace std;int arr[51];int main() { int T; cin >> T; // 테스트 케이스 수 int n; int x = 1; while (T--) { cin >> n; // 학생 수 for (int i = 0; i > arr[i]; // 성적 입력 } ..
백준 2798번 [블랙잭](C++)-yes6686- 티스토리 백준 문제 풀이: 2798 [블랙잭]문제 링크: https://www.acmicpc.net/problem/2798문제 설명:카드의 숫자가 주어질 때, 세 개의 카드를 선택하여 합이 주어진 숫자 m을 넘지 않는 가장 큰 값을 찾는 문제입니다.문제 해결 코드#include using namespace std;int arr[101];int dp[101];int main() { int n, m; cin >> n >> m; // 카드 개수 n과 목표 값 m 입력 for (int i = 0; i > arr[i]; // 카드 숫자 입력 } for (int i = 2; i 코드 설명핵심 알고리즘: 완전 탐색을 사용하여 세 개의 카드 조합 중 합이 m을 넘지 않는 최대값을 찾음구현 세부사항:중..
백준 2775번 [부녀회장이 될테야](C++)-yes6686- 티스토리 백준 문제 풀이: 2775 [부녀회장이 될테야]문제 링크: https://www.acmicpc.net/problem/2775문제 설명:아파트의 k층 n호에 살기 위해서는 아래층 사람 수의 합을 모두 더해야 합니다. 0층의 n호에는 n명의 사람이 삽니다. k층 n호의 사람 수를 출력하는 문제입니다.문제 해결 코드#include using namespace std;int sum = 0;// k층 n호의 주민 수 계산int residents(int k, int n) { if (k == 0) { sum += n; } else { for (int i = 1; i > T; int k, n; while (T--) { cin >> k >> n; c..
백준 2751번 [수 정렬하기 2](C++)-yes6686- 티스토리 백준 문제 풀이: 2751 [수 정렬하기 2]문제 링크: https://www.acmicpc.net/problem/2751문제 설명:주어진 정수 n개의 수를 오름차순으로 정렬하는 문제입니다. 입력 범위가 크기 때문에 효율적인 알고리즘을 사용해야 합니다.문제 해결 코드#include #include using namespace std;// 퀵 정렬 함수void quickSort(int* data, int start, int end) { if (start >= end) { return; } int key = start; int i = start + 1; int j = end; while (i = data[key] && j > start) { j..
백준 2292번 [벌집](C++)-yes6686- 티스토리 백준 문제 풀이: 2292 [벌집]문제 링크: https://www.acmicpc.net/problem/2292문제 설명:벌집 구조에서 주어진 방 번호 N까지 도달하기 위해 거쳐야 하는 최소 방 수를 구하는 문제입니다.중심 방(1번 방)부터 시작하여 각 층마다 방의 개수는 6씩 증가합니다.예를 들어, 첫 번째 층에는 1개의 방, 두 번째 층에는 6개의 방, 세 번째 층에는 12개의 방이 있습니다.문제 해결 코드#include using namespace std;int main() { int N; cin >> N; if (N == 1) { cout cnt) { cnt += 6 * layer; // 각 층의 방 개수는 6의 배수로 증가 layer++; ..

728x90
반응형
LIST