전체 글(230)
-
미로 만들기 - 1347
문제https://www.acmicpc.net/problem/1347느낀점방향과 위치 이동을 모두 고려해주어야했기 때문에 상당히 어려웠다. 그리고 처음에는 방향을 반대로 생각해서 예시를 이해못했는데, 그것 때문에 처음에 문제를 잘못 풀었다. 문제를 먼저 제대로 이해하자풀이#include #include #include int changeDirection(int direction, char cmd){ if (cmd == 'R') { if (direction == 0) { return 3; } else if (direction == 1) { return 0; } else ..
2025.02.12 -
창고 다각형 - 2304
문제https://www.acmicpc.net/problem/2304느낀점내려갔다가 올라오는 경우를 없애려면 가장 높은 곳을 중심으로 내려가도록만 설계해야한다. 성공 조건을 생각해내는 것이 상당히 어려웠던 문제풀이#include #include #include #include int main(){ int N, start, height; int maxHeight = 0, maxIndex = 0, curHeight, curStart; long answer = 0; std::pair temp; std::vector> factory; std::cin >> N; for (int i = 0; i > start >> height; temp = std::make_pai..
2025.02.12 -
참외밭 - 2477
문제https://www.acmicpc.net/problem/2477느낀점상당히 애를 많이 먹었다.. 큰 부분에서 작은 부분을 빼줘야한다는 것은 알았지만, 작은 부분을 어떻게 계산할지에 대해 많이 고민하였다. 돌아가는 경로를 곱씹으면서 규칙을 파악하여 문제를 해결하였다.풀이#include #include #include int main(){ int K, direction, length; std::cin >> K; std::vector> move; std::map directionCount; int bigArea = 1; int smallArea = 1; for (int i = 0; i > direction >> length; directionCount[d..
2025.02.12 -
결혼식 - 5567
문제https://www.acmicpc.net/problem/5567느낀점기본적인 그래프 문제풀이#include #include #include #include int main(){ int n, m; int start, end; std::map> friends; std::cin >> n; std::cin >> m; std::vector invited(501, false); for (int i = 0; i > start >> end; friends[start].push_back(end); friends[end].push_back(start); } for (auto &pair : friends) { if (pair.f..
2025.02.12 -
점프 점프 - 11060
문제https://www.acmicpc.net/problem/11060느낀점점프 위치와 함께 드는 비용(횟수)를 함께 기록해야했는데 전형적인 bfs 문제풀이#include #include #include int main(){ int N, number, cnt = 0; std::vector numList; std::queue startPoint; std::cin >> N; std::vector answer(N + 1, -1); startPoint.push(0); answer[0] = 0; for (int i = 0; i > number; numList.push_back(number); } while (!startPoint.empty()) ..
2025.02.12 -
양 한마리... 양 두마리... - 11123
문제https://www.acmicpc.net/problem/11123느낀점기본 dfs 문제로 접근 가능풀이#include #include #include void dfs(int i, int j, std::vector> &map){ if(i = map.size() || j = map[0].size() || map[i][j] == '.'){ return; } map[i][j] = '.'; dfs(i-1, j, map); dfs(i+1, j, map); dfs(i, j-1, map); dfs(i, j+1, map);}int main(){ int T; std::cin >> T; for (int i = 0; i > H >> W; st..
2025.02.12