본문 바로가기

Algorithm278

[Java] 프로그래머스 level3 입국심사 https://school.programmers.co.kr/learn/courses/30/lessons/43238# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr코딩테스트 연습 > 이분탐색 > 입국심사문제 설명n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가.. 2024. 5. 17.
[Dijkstra] 다익스트라 목차다익스트라?다익스트라 진행 과정우선순위 큐를 이용한 다익스트라 알고리즘백준 1753 최단경로 골드4백준 11779 최소비용 구하기2 골드3 - 다익스트라 경로 복원참고 자료다익스트라?다익스트라 알고리즘 = 하나의 시작점으로부터 다른 모든 정점까지의 최단 거리를 구하는 알고리즘다익스트라 알고리즘을 돌리면 최단 거리 테이블을 채울 수 있다. 플로이드 VS 다익스트라 VS 벨만 포드 플로이드: 모든 정점 쌍 사이의 최단 거리를 구하는 알고리즘다익스트라: 하나의 시작점으로부터 다른 모든 정점까지의 최단 거리를 구하는 알고리즘다익스트라 진행 과정다익스트라는 시작 정점과 도착 정점까지의 최단 거리를 확정하면서 모든 정점과의 최단 거리를 구하는 알고리즘이다.1번 정점에서 다른 모든 정점까지의 최단 거리를 구해보자.. 2024. 5. 16.
[Floyd] 플로이드 알고리즘 목차플로이드 설명플로이드 알고리즘 과정플로이드 알고리즘 시간 복잡도백준 11404 플로이드 골드4백준 11780 플로이드2 골드2참고 자료플로이드 설명Folyd(플로이드) 알고리즘은 그래프 최단 경로를 찾는 알고리즘 중 하나이다.정점1 → 정점3 : 최단경로는 1이다.정점3 → 정점5 : 최단경로는 3 → 4 + 4 → 5 = 3 + 6 = 9 이다.플로이드 알고리즘 = 모든 정점 쌍 사이의 최단 거리를 구하는 알고리즘현재 그래프는 무방향(양방향) 그래프 이지만 그래프가 방향 그래프이건, 무방향 그래프이건 상관이 없다.간선의 값이 음수여도 잘 동작하지만, 음수인 사이클이 있으면 문제가 생긴다.하지만 애초에 간선의 값이 음수인 상황이 일반적이지는 않다.플로이드 알고리즘의 구현 난이도는 MST에 비해 비교적.. 2024. 5. 15.
[Minimum Spanning Tree] 최소 신장 트리 목차1. 신장 트리2. 최소 신장 트리3. 유니온 파인드(Union - Find) 알고리즘 4. 크루스칼(Kruskal) 알고리즘 5. 백준 1197 최소 스패닝 트리 - 크루스칼 6. 프림(Prim) 알고리즘 7. 백준 1197 최소 스패닝 트리 - 프림8. 참고자료  신장 트리 신장 트리 주어진 방향성이 없는 그래프에서 부분 그래프(Subgraph)들 중에서 모든 정점을 포함하는 트리를 의미한다.→ 무방향이면서 사이클이 없는 → 트리신장 트리는 v개의 정점을 가질때 v-1개의 정점을 가진다. (트리의 성질) 부분 그래프일부 정점과 간선만을 선택해서 구성한 새로운 그래프 신장 트리가 아닌 그래프 예시 최소 신장 트리 신장 트리 중에서 간선의 합이 최소인 트리를 의미최소 신장 트리는 동일한 그래프에서 한.. 2024. 5. 14.
[Java] 백준 1676 팩토리얼 0의 개수 실버5 https://www.acmicpc.net/problem/1676문제N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. 입력첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)출력첫째 줄에 구한 0의 개수를 출력한다.정답 코드 import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); long cur = 1; int cnt = 0; for (int i = 1; i 2024. 5. 5.
Algorithm [Math] 코딩 테스트에서 나오는 수학 개념 정리2 목차1. 30의 배수 :  백준 [10610] 30   2. 크기가 매우 커지는 곱하기 : 백준 [1456] 거의 소수 30의 배수 관련 문제 : 백준 [10610] 30   https://www.acmicpc.net/problem/10610 문제 설명 숫자가 주어지고 포함된 숫자를 섞어서 30의 배수가 되는 가장 큰 수를 만들고 싶다. ex) 102                    210ex)  80875542         88755420 N을 입력받는다. N는 최대 10^5개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다.입력 크기가 long으로 담지 못할 만큼 큰 숫자이다. 어떻게 해결할까?먼저 30의 배수가 되는 조건을 생각해 보자. 30은 3과 10의 LCM 이다.  1. 숫자의 각 자릿.. 2024. 5. 4.