본문 바로가기

전체 글

7511 소셜 네트워킹 어플리케이션 유니온 파인드로 쉽게 풀 수 있는 문제 유파 예제 문제 같다 - union find: https://burningjeong.tistory.com/196 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() #define MAXV 987654321 #define FOR(i, n) for(int i = 0; i < .. 더보기
28176 Maximum GCD 토요 라운드 끝나고 나서 힌트 받아가며 풀었던 문제 토요 라운드 중에 어느정도 감은 잡았다 10같은 경우를 예로 들면 10%10 = 0 10%9 = 1 10%8 = 2 10%7 = 3 10%6 = 4 10%5 = 0 최대 나올 수 있는 나머지 값이 4이다. 3 7 10을 예로 들면 7과 10은 각각 1..3, 1..4까지 나머지를 만들 수 있으니 정답은 3이 된다. 이까지는 알겠는데 7 7 7 같은 경우나 2 4 8같은 경우를 어떻게 할지 몰라서 막혔다. -> 결국 가장 작은 값을 가지고 최대공약수인지, 나머지로 만들 수 있는지 비교하면 된다 하지만 틀렸는데.... 10 12 19의 경우 정답이 4인줄 알았는데 5여야 했다. 12 19로 5를 만들면 10 5 5여서 정답은 5가 된다. 그래서 확인해야 하.. 더보기
11607 Grid dfs로 풀고 bfs로 풀었던 문제 dfs로 풀어도 문제없다고 생각했는데 갔던 곳을 또 방문하는 문제가 있었다. bfs로 푼다면 500 * 500 만큼만 이동한다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() #define MAXV 987654321 #define FOR(i, n) for(int i = .. 더보기
27113 잠입 문제 정리 - (1, 1) -> (n, m) 이동 - 매초 상하좌우 이동 또는 안 움직 - 레이저는 최대 2개 - 자율 방법로봇, 센서에 닿아도 된다 로봇에 잡히면 안 된다 -> 최대한 빠르게 이동해야 한다 -> n*m번만에 이동해야 한다 -> 직접 한 칸씩 확인하면 100,000 * 10^9 시간 초과 - x는 무조건 오른쪽으로만 이동 - L, R 범위 확인해서 오른쪽으로 넘어갈 수 있는지 확인 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in.. 더보기
22956 소나기 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() #define MAXV 987654321 #define FOR(i, n) for(int i = 0; i < (n); ++i) using namespace std; using i64 = long long int; using ii = pair; using iis .. 더보기
이차원 배열을 일차원으로 int n, m; int to_number(int i, int j) { return i * m + j; } int to_i(int x) { return x / m; } int to_j(int x) { return x % m; } 더보기
10403 Intrepid climber dfs를 사용해서 풀었다. 친구에게로 가는 모든 경로 에너지 합에서 가장 큰 에너지를 빼면 되는 건 알겠다.. 그런데 구현이 문제지... "친구에게 가는 경로의 합" 을 구하는게 어려웠는데 현욱님 구현보고 도움을 받았다. 친구를 거칠 경우 true를 리턴하게 하고 true일 경우 에너지를 더하기 그리고 path를 갱신해주면서 해당 노드까지 가는 에너지의 합을 구하는 것도 기억해두자 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #de.. 더보기
24049 정원 (Easy) 그대로 구현했다 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() #define MAXV 987654321 using namespace std; using i64 = long long int; using ii = pair; using iis = pair; using ii64 = pair; using iii =.. 더보기