본문 바로가기

전체 글151

[백준] 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.
[프로그래머스] 정수 삼각형 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 #include #include #include #include using namespace std; const int MAX = 501; int dp[MAX][MAX]; int solution(vector triangle) { int answer = 0; dp[0][0] = triangle[0][0]; for(int i=1;i 2023. 2. 24.