본문 바로가기

Algorithm/완전탐색4

[프로그래머스] 전력망을 둘로 나누기 c++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include #include #include #include using namespace std; vector v(101); bool visited[101]; void dfs(vector except, int index){ visited[index] = true; for(int i=0;i 2023. 2. 23.
[프로그래머스] 피로도 c++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include #include #include #include using namespace std; int solution(int k, vector d) { int answer = 1; vector v; for(int i=0;i 2023. 2. 21.
[프로그래머스] 소수찾기 c++ 알고리즘 생각한 알고리즘을 다음 세가지 단계로 나눴다. 1. 받은 종이조각의 숫자들을 하나하나 배열에 넣어서, 만들 수 있는 모든 숫자 조합을 구하기(next_permutation사용). 2. 011과 11이 같은 숫자인 것처럼, 중복을 제거하기 3. 에라토스테네스의 체를 이용해서 소수판별하기 정리 만들 수 있는 숫자 조합을 모두 구하는 과정에서 가령 1,2,0의 숫자가 있을 경우에 순열(next_permutation)로 120, 102, 210, 201, 012, 021의 숫자를 만든 후에, 각자의 숫자에 대해서 숫자를 하나씩 더해가면서 (120의 경우 1, 12, 120 세개의 수를 만들 수 있다.) 모든 숫자조합을 만들 수 있었다. STL이 지원하는 vector의 기능들에 대해서 잘 사용해볼 수 있.. 2022. 9. 30.
백준 11403 경로찾기 플로이드 와샬알고리즘을 이용해서, 경로 i -> k와 k -> j 가 존재한다면, 경로 i -> j도 존재하도록 하는것이 핵심이다. 플로이드-와샬? 모든 정점에서 모든 정점으로의 최단 경로를 구하고 싶다면 플로이드 와샬 알고리즘을 사용해야 한다. Key point는 '거쳐가는 점'을 기준으로 최단거리를 구하는것! 플로이드 와샬은 다이나믹 알고리즘을 사용한다. 자세한 설명은 아래 사이트를 참고하였다. https://blog.naver.com/ndb796/221234427842 24. 플로이드 와샬(Floyd Warshall) 알고리즘 지난 시간에는 다익스트라(Dijkstra) 알고리즘에 대해 학습했습니다. 다익스트라 알고리즘은 하나의 정점... blog.naver.com 2022. 2. 5.