알고리즘 풀이
-
백준 1068번 트리 :: 마이구미알고리즘 풀이/그래프 2017. 1. 24. 22:01
이번 글은 백준 알고리즘 1068번 문제 "트리" 를 다뤄본다.문제명 그대로 트리 문제이다.백준 알고리즘 1068번 트리https://www.acmicpc.net/problem/1068 현재 리프 노드의 개수는 3개이다. (초록색 색칠된 노드) 이 때, 1번을 제거한다고 하면, 다음과 같이 된다. 위 그림과 같이 1번을 제거한다면 리프노드는 2번 노드 하나밖에 남지 않는다.만약 3번을 제거한다면 2번, 4번 노드가 남아 2개의 리프노드가 남게 된다.그렇다면 0번이 제거된다면, 리프노드는 0개가 되는 것이다.즉 제거되는 노드의 자식들을 함께 제거한다. 문제는 생각보다 간단하다.결국 제거되는 노드와 연결되어있는 자식들을 제거하면 된다.다른 사람들은 쉽게 배열만으로 풀었지만, 본인은 머리가 잘 안돌아갔다. 본..
-
백준 9466번 텀 프로젝트 :: 마이구미알고리즘 풀이/그래프 2017. 1. 22. 17:31
이번 글은 백준 9466번 문제 "텀 프로젝트" 를 다뤄본다.백준 알고리즘 문제 9466번 텀 프로젝트 https://www.acmicpc.net/problem/9466DFS, BFS 관련 글.http://mygumi.tistory.com/102 예를 들어, 한 반에 7명의 학생이 있다고 하자. 학생들을 1번부터 7번으로 표현할 때, 선택의 결과는 다음과 같다.12345673137346위의 결과를 통해 (3)과 (4, 7, 6)이 팀을 이룰 수 있다. 1, 2, 5는 어느 팀에도 속하지 않는다.주어진 선택의 결과를 보고 어느 프로젝트 팀에도 속하지 않는 학생들의 수를 계산하는 프로그램을 작성하라. 문제를 보면 10451번과 흡사하다.이 문제도 사이클을 찾으면 된다.10451번과 다른 점은 중복 입력이 주..
-
백준 10451번 순열 사이클 :: 마이구미알고리즘 풀이/그래프 2017. 1. 22. 15:28
이번 글은 백준 알고리즘 10451번 "순열 사이클" 을 다뤄본다.백준 알고리즘 10451번 순열 사이클 문제https://www.acmicpc.net/problem/10451DFS, BFS 관련 글.http://mygumi.tistory.com/102 위 그림처럼 사이클 개수를 찾는 문제이다. (방향이 존재함으로 방향 그래프)정점들이 연결되어 하나의 그래프를 이루는 것을 그래프의 연결 요소라고도 말한다.즉, 연결 요소의 개수가 순열 사이클의 개수와 같은 의미이므로, 연결 요소를 구하면 되는 문제이다. 이 문제의 이름이 보면, 순열 그래프이다.순열의 정의 상 숫자는 중복으로 입력되지 않는다고 한다.그렇다는 건, 그래프가 한개 이상이 존재하지만, 주어지는 그래프는 모든 정점에 연결된 사이클이 있는 그래프라..
-
백준 11403번 경로 찾기 :: 마이구미알고리즘 풀이/그래프 2017. 1. 20. 23:42
이번 글은 백준 알고리즘 문제 11403번 "경로 찾기" 를 다뤄본다.이 문제는 그래프의 DFS, BFS 를 활용하는 문제이다.DFS, BFS - http://mygumi.tistory.com/102백준 알고리즘 문제 11403번 경로 찾기 - https://www.acmicpc.net/problem/11403 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. 친절하게 문제에서 어떤 그래프인지 말해주고 있다.가중치가 없는 방향 그래프라고 명시되어 있다.그래프에 대한 글에서 무방향 그래프를 기준으로 다뤘었다.차이는 단지 방향이 있고 없고 차이뿐이다. // 무방향 그래프 인접행렬a[v1][v2] = 1;a[v2..
-
백준 2493번 탑 [Stack] :: 마이구미알고리즘 풀이/스택, 큐 2017. 1. 18. 23:48
이번 글은 백준 알고리즘 2493번 문제 "탑" 을 다뤄본다.스택을 응용한 문제이다.백준 2493번 탑 문제 - https://www.acmicpc.net/problem/2493 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 개의 탑이 수평 직선에 일렬로 서 있고, 모든 탑에서는 주어진 탑 순서의 반대 방향(왼쪽 방향)으로 동시에 레이저 신호를 발사한다고 하자. 그러면, 높이가 4인 다섯 번째 탑에서 발사한 레이저 신호는 높이가 7인 네 번째 탑이 수신을 하고, 높이가 7인 네 번째 탑의 신호는 높이가 9인 두 번째 탑이, 높이가 5인 세 번째 탑의 신호도 높이가 9인 두 번째 탑이 수신을 한다. 높이가 9인 두 번째 탑과 높이가 6인 첫 번째 탑이 보낸 레이저 신호는 어떤 탑에서도 수신을 하지 못한..
-
백준 2579번 계단 오르기 [DP] :: 마이구미알고리즘 풀이/동적계획법 2017. 1. 16. 22:58
이번 글은 백준 알고리즘 2579번 "계단 오르기" 문제를 다뤄본다.일단 문제를 보자. 이 문제는 동적계획법으로 접근하는 문제이다.문제에서 친절하게 규칙 3가지를 알려주었다.먼저 3번 규칙을 보면, 마지막 계단은 무조건 밟는다는 것이 규칙이다. 그렇다면, 마지막 계단을 밟았을 경우, 이전의 경우를 2가지로 생각할 수 있다.1. 마지막 계단 전의 계단을 밟은 경우.2. 마지막 계단 전의 계단을 밟지 않은 경우. 1번의 경우에는 마지막 계단 전의 계단을 밟았음으로, 마지막 계단 전전의 계단은 밟지 못한다.2번의 경우에는 마지막 계단 전의 계단을 밟지 않았음으로, 마지막 계단 전전의 계단을 밟고 왔다. 위 경우를 통해 점화식을 도출해보자. 1. dp[n] = dp[n-3] + array[n-1] + array..
-
백준 3986번 좋은 단어 [Stack] :: 마이구미알고리즘 풀이/스택, 큐 2017. 1. 16. 21:00
이번 글은 백준 알고리즘 3986번 "좋은 단어" 를 다뤄본다.이 문제는 스택을 통해 접근하는 문제이다.백준 3986번 좋은 단어 - https://www.acmicpc.net/problem/3986 평석이는 단어 위로 아치형 곡선을 그어 같은 글자끼리(A는 A끼리, B는 B끼리) 쌍을 짓기로 하였다. 만약 선끼리 교차하지 않으면서 각 글자를 정확히 한 개의 다른 위치에 있는 같은 글자와 짝 지을수 있다면, 그 단어는 '좋은 단어'이다. 평석이가 '좋은 단어' 갯수를 세는 것을 도와주자. 문제만 보면, 바로 쉽게 이해하기는 힘들 수 있다.먼저 예를 통해 문제를 이해해보자.ABAB 주어졌을 경우를 보자.1. ABAB => A와 A 위로 아치형 곡선을 그린다.2. ABAB => B와 B 위로 아치형 곡선을 ..
-
백준 2156번 포도주 시식 [DP] :: 마이구미알고리즘 풀이/동적계획법 2017. 1. 16. 21:00
이번 글은 백준 알고리즘 문제 2156번 "포도주 시식" 을 다뤄본다.일단 문제를 보자. 1. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다.2. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. 효주는 될 수 있는 대로 많은 양의 포도주를 맛보기 위해서 어떤 포도주 잔을 선택해야 할지 고민하고 있다. 1부터 n까지의 번호가 붙어 있는 n개의 포도주 잔이 순서대로 테이블 위에 놓여 있고, 각 포도주 잔에 들어있는 포도주의 양이 주어졌을 때, 효주를 도와 가장 많은 양의 포도주를 마실 수 있도록 하는 프로그램을 작성하시오. 6, 10, 13, 9, 8, 1 주어졌을 때, 6, 10, 9, 8 을 고르면 최대의 양 33이 정답이 된다. 이 문제..