C 프로그래밍/BOJ
-
[백준 1753] 최단 거리C 프로그래밍/BOJ 2022. 9. 15. 20:22
https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net #include #include #include #include int V, E; int K; int chk[20000 + 10]; int ans[20000 + 10]; using namespace std; struct _st { int n; int c; }; struct COMP { bool operator()(_st &a, _st &b) { return a..
-
[백준 1655] 가운데를 말해요C 프로그래밍/BOJ 2022. 9. 15. 19:38
https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net #include #include int N; using namespace std; priority_queue PQ_small; // 작은 수들의 집합 priority_queue PQ_big;// 큰 수들의 집합 void add_num(int n) { if (PQ_small.empty() || PQ_small.top() > n) {//작은 수 들의 집합 중 가장 큰 수가 항상 중앙값..
-
[백준 17141] 연구소 2C 프로그래밍/BOJ 2022. 9. 15. 01:10
++22.11.10 갱신 https://www.acmicpc.net/problem/17141 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이 www.acmicpc.net #include #include #include int N, M;//50 * 50맵, 최대 10개 int board[50 + 2][50 + 2]; int ans = 0x7fffffff; int wall; int zeros; struct _st { int x, y; }; std::vector V; int v_cnt; int choice[10 + 2]; struct _qt { int ..
-
[백준 7576, 7569] 토마토C 프로그래밍/BOJ 2022. 9. 14. 22:32
https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 이전에 짰던 코드는 다음과 같다. 더보기 #include #include #include int M, N; int box[1000 + 10][1000 + 10]; int visited[1000 + 10][1000 + 10]; int cnt; int no_tomato; int min_day; struct _st { int x; int y; int d; }; std::queue Q; ..
-
[백준 16234] 인구이동C 프로그래밍/BOJ 2022. 9. 14. 20:22
https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net #include #include #include #include #include int N, L, R; int terr[50 + 2][50 + 2]; struct _st { int x; int y; }; int visited[50 + 2][50 + 2];// 방문 표시할 배열 int days; int still_union; void input(void) { scanf("%d %d %..
-
[백준 9207] 페그 솔리테어C 프로그래밍/BOJ 2022. 9. 13. 22:31
https://www.acmicpc.net/problem/9207 9207번: 페그 솔리테어 각 테스트 케이스에 대해서, 핀을 움직여서 남길 수 있는 핀의 최소 개수와 그 개수를 만들기 위해 필요한 최소 이동 횟수를 출력한다. www.acmicpc.net #include #include int N;// 테케 수 char board[5 + 2][9 + 2]; int min_cnt; int pin_cnt; int dir_x[4] = { 0, 0, 1, -1 }; int dir_y[4] = { 1, -1, 0, 0 }; void init(void)// 테케 여러개 이므로 맵과 각 변수들 초기화 필요 { for (int i = 0; i < 5; i++) { std::fill(board[i], board[i] +..
-
[백준 9663] N-QueenC 프로그래밍/BOJ 2022. 9. 13. 20:34
https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net #include int N; int cnt; int flag_col[15 + 2]; int flag_RD[30 + 2]; int flag_LD[30 + 2]; int chk(int r, int c) { if (flag_col[c]) return false;// 만약 해당 열에 이미 퀸이 있다면 false 리턴 if (flag_LD[r - c + (N - 1)]) return false;// 왼쪽 대각선 위에 퀸이..