DFS6 [C++][Kotlin] BOJ 1967. 트리의 지름 출처https://www.acmicpc.net/problem/1967 문제트리(tree)는 사이클이 없는 무방향 그래프이다. 트리에서는 어떤 두 노드를 선택해도 둘 사이에 경로가 항상 하나만 존재하게 된다. 트리에서 어떤 두 노드를 선택해서 양쪽으로 쫙 당길 때, 가장 길게 늘어나는 경우가 있을 것이다. 이럴 때 트리의 모든 노드들은 이 두 노드를 지름의 끝 점으로 하는 원 안에 들어가게 된다.이런 두 노드 사이의 경로의 길이를 트리의 지름이라고 한다. 정확히 정의하자면 트리에 존재하는 모든 경로들 중에서 가장 긴 것의 길이를 말한다.입력으로 루트가 있는 트리를 가중치가 있는 간선들로 줄 때, 트리의 지름을 구해서 출력하는 프로그램을 작성하시오. 아래와 같은 트리가 주어진다면 트리의 지름은 45가 .. 2024. 11. 27. [C++] BOJ 14500. 테트로미노 출처https://www.acmicpc.net/problem/14500 문제폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다.정사각형은 서로 겹치면 안 된다.도형은 모두 연결되어 있어야 한다.정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다.정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다.아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다.테트로미노 하나를 적절히 놓아서 테트로미노가 놓인 칸에 쓰여 있는 수들의 합을 최대로 하는 프로그램을 작성하시오.테트로미노는 반드시.. 2024. 11. 24. [C++] SWEA [S/W 문제해결 응용] 2일차 - 최대 상금 출처https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15Khn6AN0CFAYD풀이#includeusing namespace std;string num;int swapCnt, result;void dfs(int cnt, int idx) { if (cnt == swapCnt) { result = max(result, stoi(num)); return; } for (int i = idx; i > T; for (int t = 1; t > num >> swapCnt; result = 0; dfs(0, 0); cout 2024. 11. 17. [C++] SWEA 최장 경로 출처https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GOPPaAeMDFAXB 풀이#include using namespace std;int result = 0;map> nodes;void dfs(int start, vector visited, int cnt) { visited[start] = true; for (int next : nodes[start]) { if (!visited[next]) { dfs(next, visited, cnt + 1); } } if (result > T; for (int t = 1; t > N >> M; vector visited(N+1, false); for (int.. 2024. 11. 13. 이전 1 2 다음