본문 바로가기

Algorithm66

[백준] 1012 유기농 배추 c++ 문제 링크 https://www.acmicpc.net/problem/1012 백준 2667번 [단지번호 붙이기]와 거의 같은 문제이다. 문제 풀이 링크 >> https://everydayyy.tistory.com/101 DFS로 배열을 한번 순회할 때마다 카운트를 해주면 되는 문제이다. 주의할 점은, 테스트케이스마다 방문배열, 입력배열을 0으로 초기화해야 된다는 점. 아마 이부분 때문에 정답률이 낮았던 것 같다. 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 48 49 50 51 52 #include #inc.. 2023. 2. 27.
[백준] 2667 단지번호붙이기 c++ 문제링크 https://www.acmicpc.net/problem/2667 DFS와 BFS 둘다 이용해서 풀이했다. DFS 주의사항 dfs재귀 함수를 호출할 때마다 count를 증가해선 안된다.--> dfs(nx,ny,count+1)이런식으로 매개변수로 넣으면 안된다는 뜻. 그 이유는, 일직선 상으로 생기지 않고 (ㅓ,ㅗ,ㅏ,ㅗ) DFS풀이 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 48 49 50 51 52 53 54 55 56 57 #define _CRT_SECURE_NO_WARNINGS #include #in.. 2023. 2. 27.
[백준] 1654 랜선 자르기 c++ 가장 긴 랜선을 기준으로 1부터 가장 긴 랜선 길이를 탐색하면서 갯수가 k이상이 되게 하는 값 중 최댓값을 구하는 문제이다. 주의할 점은, 완전탐색을 할 경우 1,000,000 *10,000의 시간복잡도가 나오기 때문에 1부터 가장 긴 랜선의 길이를 탐색할 때, 이진탐색을 이용해야 한다. 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 #include #include #include using namespace std; int n, k; vector v; long long answer; //갯수 합산하는 함수 int ch.. 2023. 2. 25.
[프로그래머스] 가장 먼 노드 c++ BFS풀이 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 #include #include #include #include #include using namespace std; vector v(50001); //간선벡터 bool visited[20001]; //방문여부 vector dist(20001); //최단거리 저장 (dist[3]인 경우 3까지의 최단경로) int max_dist; //최대거리 void bfs(int node){ queue q; visited[node] = true; q.push(node); while.. 2023. 2. 25.
[백준] 1987 알파벳 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 #include #include #include using namespace std; const int MAX = 21; int r, c; int dir[4][2] = { {-1,0},{1,0},{0,-1},{0,1} }; int alpha[26]; char arr[MAX][MAX]; int answer; void dfs(int x, int y, int cnt) { answer = max(answer, cnt); for (int i = 0; i > r >> c; for (int i =.. 2023. 2. 24.
[백준] 2579 계단 오르기 c++ 문제 링크 https://www.acmicpc.net/problem/2579 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 #include #include #include using namespace std; const int MAX = 301; int n; int stair[MAX]; int dp[MAX]; int main() { cin >> n; for (int i = 0; i > stair[i]; } //dp배열 초기화 dp[0] = stair[0]; dp[1] = stair[0] + stair[1]; dp[2] = max(stair[0], stair[1]) + stair[2]; for (int i = 3; i 2023. 2. 24.