/images/logo.png

[프로그래머스]가장 먼 노드

https://programmers.co.kr 문제: n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 풀이: 현재 위치를 i 라고 하자. 이때까지 방문을 한적이 없고, i와의 거리가 1차이나는 노드를 배열에 저장한 후 visit을 true로 바꿔준다.

[백준]1697 숨바꼭질

https://www.acmicpc.net/problem/1697 풀이: 현재 위치를 x라고 할 때, x + 1, x - 1, x * 2 위치를 BFS 를 통해 하나씩 찾아간다. 동생의 위치와 같아진다면 몇번 이동했는지 출력한다. x + 1 은 동생의 위치보다 커질 필요가없으므로 동생의 위치보다 작을때만 이동한다. x * 2 는 동생의 위치 + 1 보다 크다면 (x - 2) * 2 를 하는 것이 이득이므로 제외한다. 현재 위치는 0보다 작아질 수 없으므로 제외한다. 이미 한번 방문한 위치는 다시 방문할 필요없으므로 제외시킨다.

[백준]2206 벽 부수고 이동하기

https://www.acmicpc.net/problem/2206 풀이: [백준]2178 미로 탐색 참고 코드: 사용언어 : c++ 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 58 59 60 61 62 63 64 65 #include <iostream>#include <vector>#include <queue>using namespace std; int n, m, k = -1, q, w, e, dps; vector<string> a; queue<pair<int, pair<int, int>>> dp; bool b[2][1002][1002]; int main() { cin >> n >> m; a.

[백준]7569 토마토

https://www.acmicpc.net/problem/7569 풀이: [백준]7576 토마토 참고 코드: 사용언어 : c++ 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 58 59 60 #include <iostream>#include <queue>using namespace std; int n, m, h, k, q, w, e, a[102][102][102]; queue<pair<int, pair<int, int>>> dp2; int main() { cin >> m >> n >> h; for (int y = 0; y < h; y++) for (int i = 0; i < n; i++) for (int t = 0; t < m; t++) { cin >> a[y][i][t]; if (a[y][i][t] == 1) dp2.

[C++]비트연산자

비트연산자 비트연산자 DP문제를 푸는데 있어, 연산속도를 빠르게 하기 위해 사용 « , » 시프트 연산자. 비트의 자리를 옮겨줌 ex) 1 « 3 1000 NOT - ( ~ ) 0 은 1로 1은 0으로 반대로 바꿔준다. ex) 0000000 1111111 AND - ( & ) 둘 다 1 일때만 1, 아니면 0 ex) 1100110 & 1011001 1000110 OR - ( | ) 둘 중 하나라도 1이라면 1, 아니면 0 ex)

[백준]1012 유기농 배추

https://www.acmicpc.net/problem/1012 풀이: [백준]2667 단지번호붙이기 참고 코드: 사용언어 : c++ 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 #include <iostream>#include <string.h>using namespace std; int n, T, m, k, q, w, sum, a[52][52]; bool b[52][52]; void num(int x, int y) { b[x][y] = true; if (x + 1 < n && a[x + 1][y] && !