Algorithm/BOJ(23)
-
16988 - Baaaaaaaaaduk2 (Easy)(C++)
https://www.acmicpc.net/problem/16988 16988번: Baaaaaaaaaduk2 (Easy) 서기 2116년, 인간은 더 이상 AI의 상대가 되지 못하게 되었다. 근력, 순발력, 창의력, 사고력, 문제해결능력, 심지어 인간미조차 AI가 인간을 앞선다. AI가 온 지구를 관리하며 이미 인류는 지구의 www.acmicpc.net 풀이 bfs를 활용한 완전탐색 유형의 문제였다. 세 가지 단계로 구성하여 문제를 해결하였다. 먼저 하얀 돌을 두 개를 둘 곳을 선택한다. 이후 검은 돌의 영역을 탐색하여 해당 영역의 검은 돌들이 하얀 돌들에 둘러쌓여 먹히는지 여부를 체크한다. 먹히는 구역의 수를 카운트하여 최댓값을 구한다. 핵심적인 부분은 bfs를 돌리는 부분인데, 각 검은 돌들의 인접한..
2024.04.22 -
3584 - 가장 가까운 공통 조상(C++)
https://www.acmicpc.net/problem/3584 3584번: 가장 가까운 공통 조상 루트가 있는 트리(rooted tree)가 주어지고, 그 트리 상의 두 정점이 주어질 때 그들의 가장 가까운 공통 조상(Nearest Common Anscestor)은 다음과 같이 정의됩니다. 두 노드의 가장 가까운 공통 조상은, 두 www.acmicpc.net 풀이 먼저 부모를 저장하는 배열인 parent를 초기화시켜주며, 부모 정보를 입력을 통해 저장한다. 이후 입력받는 두 노드중 하나를 bottom-up 방식으로 루트 노드까지 방문처리를 시켜준 후, 다른 한쪽의 노드를 루트 노드까지 올리는 과정을 진행시키며, 가장 먼저 방문처리가 되어있는 노드를 방문하게 되면 해당 노드가 최소 공통 조상이 된다. ..
2024.04.22 -
16964 - DFS스페셜 저지(C++)
https://www.acmicpc.net/problem/16964 16964번: DFS 스페셜 저지 첫째 줄에 정점의 수 N(2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에는 트리의 간선 정보가 주어진다. 마지막 줄에는 DFS 방문 순서가 주어진다. DFS 방문 순서는 항상 N개의 정수로 이루 www.acmicpc.net 풀이 핵심은 각 노드의 순서를 저장하는 배열을 선언하여, 순서를 저장 후 그래프에 이어져있는 노드의 정렬을 통해 높은 우선순위를 먼저 순회하도록 설계하는 것이었다. 이후 처음 입력받은 순서와 dfs를 순회하면서 저장한 순서와 같으면 1을 출력하고 다르면 0을 출력하도록 설계하였다. #include #include #include using namespace st..
2024.04.22 -
1987 - 알파벳(C++)
문제 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다. 즉, 같은 알파벳이 적힌 칸을 두 번 지날 수 없다. 좌측 상단에서 시작해서, 말이 최대한 몇 칸을 지날 수 있는지를 구하는 프로그램을 작성하시오. 말이 지나는 칸은 좌측 상단의 칸도 포함된다. 입력 첫째 줄에 R과 C가 빈칸을 사이에 두고 주어진다. (1 ≤ R,C ≤ 20) 둘째 줄부터 R개의 줄에 걸쳐서 보드에 적혀 있는 C개의 대문자 알파벳들이 빈칸 없이 주어진다. 출력..
2024.04.22 -
14267 - 회사문화(C++)
문제 영선회사에는 매우 좋은 문화가 있는데, 바로 상사가 직속 부하를 칭찬하면 그 부하가 부하의 직속 부하를 연쇄적으로 칭찬하는 내리 칭찬이 있다. 즉, 상사가 한 직속 부하를 칭찬하면 그 부하의 모든 부하들이 칭찬을 받는다. 모든 칭찬에는 칭찬의 정도를 의미하는 수치가 있는데, 이 수치 또한 부하들에게 똑같이 칭찬 받는다. 직속 상사와 직속 부하관계에 대해 주어지고, 칭찬에 대한 정보가 주어질 때, 각자 얼마의 칭찬을 받았는지 출력하시오, 입력 첫째 줄에는 회사의 직원 수 n명, 최초의 칭찬의 횟수 m이 주어진다. 직원은 1번부터 n번까지 번호가 매겨져 있다. (2 ≤ n, m ≤ 100,000) 둘째 줄에는 직원 n명의 직속 상사의 번호가 주어진다. 직속 상사의 번호는 자신의 번호보다 작으며, 최종적..
2024.04.22 -
1759 - 암호 만들기(C++)
문제 바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다. 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음(a, e, i, o, u)과 최소 두 개의 자음으로 구성되어 있다고 알려져 있다. 또한 정렬된 문자열을 선호하는 조교들의 성향으로 미루어 보아 암호를 이루는 알파벳이 암호에서 증가하는 순서로 배열되었을 것이라고 추측된다. 즉, abc는 가능성이 있는 암호이지만 bac는 그렇지 않다. 새 보안 시스템에서 조교들이 암호로 사용했을 법한 문자의 종류는 C가지가 있다고 한다. 이 알파벳을 입수한 민식, 영..
2024.04.22