Algorithm 202

[JAVA] 프로그래머스 level3 주사위 고르기

https://school.programmers.co.kr/learn/courses/30/lessons/258709 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 코딩테스트 연습 > 2024 KAKAO WINTER INTERNSHIP > 주사위 고르기  문제 접근 해당 문제는 완전탐색, 이분탐색을 조합해서 문제를 풀었다.  주사위가 짝수로 주어지고 A가 주어진 주사위 N/2개 B가 주어진 주사위 N/2개를 고른다. 각 주사위는 일반적인 주사위와 다르게 숫자가 랜덤하다. 또한 중복된 숫자도 있다. #1 [1, 2, 3, 4, 5, 6] #2 [3, 3, 3, ..

[JAVA] 프로그래머스 level2 도넛과 막대 그래프

https://school.programmers.co.kr/learn/courses/30/lessons/258711 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 코딩테스트 연습 > 2024 KAKAO WINTER INTERNSHIP > 도넛과 막대 그래프 문제 설명도넛 모양 그래프, 막대 모양 그래프, 8자 모양 그래프들이 있습니다. 이 그래프들은 1개 이상의 정점과, 정점들을 연결하는 단방향 간선으로 이루어져 있습니다. 크기가 n인 도넛 모양 그래프는 n개의 정점과 n개의 간선이 있습니다. 도넛 모양 그래프의 아무 한 정점에서 출발해 이용한 적 없는 간선..

백준 플레티넘5 달성!!!

드디어 백준 플래티넘을 달성했다!!! 기존에 사용하던 백준 계정을 계속 사용했으면 더 일찍 찍었을듯하다.하지만 마음가짐을 다시 한다는 의미로 새로 만든 아이디여서 그런가 정이 많이 갔고 생각보다 금방 도달했다. 프로그래머스도 이제 꽤 많이 풀었다.이제 프로그래머스 알고리즘 고득점 kit에서 모르는 알고리즘은 없는듯하다.제일 많이 어려웠던 부분은 역시 그리디, DP, 시뮬레이션이다. 그리고 아직 바킹독의 KMP 알고리즘은 진입장벽이 높아서 아직 듣지도 못하고 있다.사실 들어야 하나 의문이 들기도 한다. KMP 알고리즘이 기업 코테에서 나왔다는 얘기를 들어본적이 없다....  최근에 소프티어 부트캠프 1차 코딩 테스트를 봤다. 인생 첫 코테였는데 생각보다 많이 떨리고 시간이 부족했다.문제를 한번 다 읽어보고..

Algorithm 2024.05.26

[Topological Sorting] 위상 정렬

목차알고리즘 설명알고리즘 Simulation알고리즘 구현백준 2252 줄 세우기 골드3참고자료알고리즘 설명실생활에서 예시 : 교과 이수 제도대학교에는 선수 과목이라는 개념이 존재한다.→ 프로그래밍1 → 프로그래밍2 / 일반수학 → 공업수학여기 내가 대학교에서 수업을 들어야 하는 과목들이 있다.모든 과목을 수강하고 싶다고 하면 어떤 순서로 과목을 들어야 할까?수강을 하는 순서로는 다양한 방법들이 존재한다.1) 이산수학, 프로그래밍1, 프로그래밍2, 자료구조, 알고리즘, 객체지향 프로그래밍2) 프로그래밍1, 프로그래밍2, 객체지향 프로그래밍, 자료구조, 이산수학, 알고리즘……이 때 과목을 정점으로 나타내고 과목의 선후 관계를 간선으로 나타낸 상황을 생각해보자.그러면 이런 그래프가 나온다. 위상 정렬(Topo..

Algorithm 2024.05.25

[Java] 프로그래머스 level3 입국심사

https://school.programmers.co.kr/learn/courses/30/lessons/43238# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr코딩테스트 연습 > 이분탐색 > 입국심사문제 설명n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있습니다. 하지만 더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가..

[Dijkstra] 다익스트라

목차다익스트라?다익스트라 진행 과정우선순위 큐를 이용한 다익스트라 알고리즘백준 1753 최단경로 골드4백준 11779 최소비용 구하기2 골드3 - 다익스트라 경로 복원참고 자료다익스트라?다익스트라 알고리즘 = 하나의 시작점으로부터 다른 모든 정점까지의 최단 거리를 구하는 알고리즘다익스트라 알고리즘을 돌리면 최단 거리 테이블을 채울 수 있다. 플로이드 VS 다익스트라 VS 벨만 포드 플로이드: 모든 정점 쌍 사이의 최단 거리를 구하는 알고리즘다익스트라: 하나의 시작점으로부터 다른 모든 정점까지의 최단 거리를 구하는 알고리즘다익스트라 진행 과정다익스트라는 시작 정점과 도착 정점까지의 최단 거리를 확정하면서 모든 정점과의 최단 거리를 구하는 알고리즘이다.1번 정점에서 다른 모든 정점까지의 최단 거리를 구해보자..

Algorithm 2024.05.16

[Floyd] 플로이드 알고리즘

목차플로이드 설명플로이드 알고리즘 과정플로이드 알고리즘 시간 복잡도백준 11404 플로이드 골드4백준 11780 플로이드2 골드2참고 자료플로이드 설명Folyd(플로이드) 알고리즘은 그래프 최단 경로를 찾는 알고리즘 중 하나이다.정점1 → 정점3 : 최단경로는 1이다.정점3 → 정점5 : 최단경로는 3 → 4 + 4 → 5 = 3 + 6 = 9 이다.플로이드 알고리즘 = 모든 정점 쌍 사이의 최단 거리를 구하는 알고리즘현재 그래프는 무방향(양방향) 그래프 이지만 그래프가 방향 그래프이건, 무방향 그래프이건 상관이 없다.간선의 값이 음수여도 잘 동작하지만, 음수인 사이클이 있으면 문제가 생긴다.하지만 애초에 간선의 값이 음수인 상황이 일반적이지는 않다.플로이드 알고리즘의 구현 난이도는 MST에 비해 비교적..

Algorithm 2024.05.15

[Minimum Spanning Tree] 최소 신장 트리

목차1. 신장 트리2. 최소 신장 트리3. 유니온 파인드(Union - Find) 알고리즘 4. 크루스칼(Kruskal) 알고리즘 5. 백준 1197 최소 스패닝 트리 - 크루스칼 6. 프림(Prim) 알고리즘 7. 백준 1197 최소 스패닝 트리 - 프림8. 참고자료  신장 트리 신장 트리 주어진 방향성이 없는 그래프에서 부분 그래프(Subgraph)들 중에서 모든 정점을 포함하는 트리를 의미한다.→ 무방향이면서 사이클이 없는 → 트리신장 트리는 v개의 정점을 가질때 v-1개의 정점을 가진다. (트리의 성질) 부분 그래프일부 정점과 간선만을 선택해서 구성한 새로운 그래프 신장 트리가 아닌 그래프 예시 최소 신장 트리 신장 트리 중에서 간선의 합이 최소인 트리를 의미최소 신장 트리는 동일한 그래프에서 한..

Algorithm 2024.05.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

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. 숫자의 각 자릿..