본문 바로가기

Algorithm50

암호 만들기(BJ_G5_1759) 1. 문제 링크 https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 2. 나의 코드 메모리: 14712kb 시간: 136ms 코드 길이: 1402B 설명: 순열을 사용해서 모든 경우의 수를 구한다. 시간복잡도 : O(N!) 하지만 만약 그 전의 알파벳과 비교해 정렬이 되지 않은 문자가 있으면 백트래킹을 한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt.. 2024. 2. 21.
제목(사이트_난이도_문제번호) 1. 문제 링크 2. 나의 코드 메모리: kb 시간: ms 코드 길이: B 시간 복잡도 : 설명: /* 코드 넣는 곳 */ 3. 정답 코드 /* 정답 코드1 */ /* 정답 코드2 */ 4. 배운 점 2024. 2. 21.
그래프 1. 그래프의 종류 - 정점 중심으로 해결 : 인접 행렬, 인접 리스트 >> 최소 신장트리 : 프림, 최단 경로 : 다익스트라 - 간선 중심으로 해결 : 간선 리스트 >> 최소 신장 트리 : 크루스칼, 최단 경로 : 벨만포드 ※ 선형 자료구조(1 : 1), 비선형 자료구조(1 : N or N : N) 2. 그래프 - 정점 : 그래프의 구성요소로 하나의 연결점 - 간선 : 두 정점을 연결하는 선 - 차수 : 정점에 연결된 간선의 수 (인접 정점의 수) - 트리도 그래프이다. - 종류 3. 인접 행렬 - V x V 정방 행렬 - 행 번호와 열 번호는 그래프의 정점에 대응 - 두 정점이 인접되어 있으면 1, 그렇지 않으면 0으로 표현 - 보통 2차원 배열로 생성 - 메모리 초과 위험 4. 인접 리스트 - Ar.. 2024. 2. 15.
그리디 알고리즘(탐욕법) 1. 그리디 알고리즘 - 최적 해를 구하는 데 사용되는 근시안적인 방법 - 여러 경우 중 하나를 선택 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식 - 각 선택 시점에서 이루어지는 결정은 지역적으로 최적이지만, 그 선택들을 계속 수집하여 최종적인 해답을 만들었다고 하여, 그것이 최적이라는 보장은 없다. - 한번 선택된 것은 번복하지 않는다. 2. 그리디 vs 다이나믹 프로그래밍 분류 그리디 알고리즘(Greedy Algorithm) 동적 계획법(DP: Dynamic Programming) 설명 각 단계에서 최적의 선택을 하는 방식으로 문제를 해결하는 방식 작은 문제의 해를 메모이제이션하여 중복 계산을 피하고, 이를 이용하여 큰 문제를 해결하는 방식 성립 조건 1. 탐욕 선택 속성(Gre.. 2024. 2. 13.