본문 바로가기

Algorithm

(203)
[SWEA] 2948번 문자열 교집합 (C++) #include #include using namespace std; unordered_set s; int main(int argc, char** argv) { ios::sync_with_stdio(false); cin.tie(NULL); int test_case; int T; cin>>T; for(test_case = 1; test_case > n >> m; int size = n + m; for(int i = 0; i > str; s.insert(str); } cout
[SWEA] 3233번 정삼각형 분할 놀이 (C++) #include using namespace std; int main(int argc, char** argv) { int test_case; int T; cin>>T; for(test_case = 1; test_case > a >> b; long long ans = (a * a)/(b * b); cout
[SWEA] 7532번 세영이의 SEM력 연도 (C++) 시간초과 코드 #include using namespace std; int main(int argc, char** argv) { int test_case; int T; cin>>T; for(test_case = 1; test_case > s >> e >> m; int num = 1; while(true){ if((num - s) % 365 == 0 && (num - e) % 24 == 0 && (num - m) % 29 == 0) break; num++; } cout e >> m; for(k = s; ; k += 365){ if((k - e) % 24 == 0 && (k - m) % 29 == 0) break; } cout
[BOJ] 2206번 벽 부수고 이동하기 (C++) https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net #include #include #include using namespace std; int n, m; char map[1001][1001]; int visited[1001][1001][2]; int dx[4] = {-1, 0, 0, 1}; int dy[4] = {0, -1, 1, 0}; bool bfs(int x, int y){ queue q; // {벽 뚫기 여부, {..
[BOJ] 21939번 문제 추천 시스템 Version 1 (C++) https://www.acmicpc.net/problem/21939 21939번: 문제 추천 시스템 Version 1 tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령 www.acmicpc.net #include #include #include using namespace std; int a, b; set s; map m; int main() { cin >> a; for (int i = 0; i > p >> l; s.insert({ l, p }); m[p] = l; } cin >> b; for (int i = 0..
[BOJ] 1516번 게임 개발 (C++) https://www.acmicpc.net/problem/1516 1516번: 게임 개발 첫째 줄에 건물의 종류 수 N(1 ≤ N ≤ 500)이 주어진다. 다음 N개의 줄에는 각 건물을 짓는데 걸리는 시간과 그 건물을 짓기 위해 먼저 지어져야 하는 건물들의 번호가 주어진다. 건물의 번호는 1부 www.acmicpc.net #include #include #include using namespace std; int n; int cost[501]; vector edge[501]; int indegree[501]; int dp[501]; void topologicalSort(){ queue q; for(int i = 1; i > n; for(int i = 1; i > cost[i]; int input; cin..
[BOJ] 17090번 미로 탈출하기 (C++) https://www.acmicpc.net/problem/17090 17090번: 미로 탈출하기 크기가 N×M인 미로가 있고, 미로는 크기가 1×1인 칸으로 나누어져 있다. 미로의 각 칸에는 문자가 하나 적혀있는데, 적혀있는 문자에 따라서 다른 칸으로 이동할 수 있다. 어떤 칸(r, c)에 적힌 문 www.acmicpc.net #include using namespace std; int n, m; char map[500][500]; int dp[500][500]; int answer; int dfs(int x, int y) { if (x = n || y = m) return 1; if (dp[x][y] != -1) return dp[x][y]; dp[x][y] = 0;..
[BOJ] 1520번 내리막길 (C++) https://www.acmicpc.net/problem/1520 1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net #include using namespace std; int m, n; int map[500][500]; int dp[500][500]; int dx[4] = { -1, 0, 0, 1 }; int dy[4] = { 0, -1, 1, 0 }; int dfs(int x, int y) { if (x == m - 1 && y == n - 1) return 1; if (dp[x][y] != -1) ret..