C 프로그래밍/BOJ
-
[백준 21680] 상어 초등학교C 프로그래밍/BOJ 2022. 10. 12. 12:52
https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net #include int N; int board[20 + 2][20 + 2]; struct _st { int n; int a, b, c, d; int x, y; }S[400 + 2]; static int dir_x[4] = { 0, 0, 1, -1 }; static int dir_y[4] = { 1, -1, 0, 0 }; int value[5] = { 0, 1, 10, 100, 1000 ..
-
[백준 20058] 마법사 상어와 파이어스톰C 프로그래밍/BOJ 2022. 10. 11. 11:28
22.11.04. 다시 작성한 코드가 더 깔끔해서 갱신.. https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net #include #include #include #include int N, Q; int A[64 + 2][64 + 2]; int L[1000 + 2]; int M; int tmp[64 + 2][64 + 2]; struct _st { int x, y; }; std::queue Ice; int visited[64 + 2]..
-
[백준 23288] 주사위 굴리기C 프로그래밍/BOJ 2022. 10. 10. 15:41
https://www.acmicpc.net/problem/23288 23288번: 주사위 굴리기 2 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 가장 왼 www.acmicpc.net #include #include #include int R, C; int board[20 + 2][20 + 2]; int K;// 1000 까지 int total; struct _st { int x, y; }; std::queue Q; int visited[20 + 2][20 + 2]; // 0동 1남 2서 3북 int dir_x[4] = { 0, 1, 0, -1 }; int d..
-
[백준 17144] 미세먼지 안녕!C 프로그래밍/BOJ 2022. 10. 10. 15:39
https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net #include #include #include #include int R, C, T; int A[50 + 2][50 + 2];// 원본 맵 int S[50 + 2][50 + 2];// 확산 맵 std::vector AC; void debug() { printf("======================================\n"); for (int i = 1; i = 3; j--) { ..
-
[백준 17779] 게리맨더링 2C 프로그래밍/BOJ 2022. 10. 10. 15:37
++22.11.10 갱신.. 그냥 4중 포문 돌리면 된다. 이 문제는 AC 받는게 중요한게 아니라, "다이아몬드 형태로 경로 만들어야 할 때 그 경계선을 어떻게 지정해야 하는지"를 알아가면 좋을 듯 싶다. #include #include #include #include int N; int A[20 + 2][20 + 2]; int total; int bound[20 + 2][20 + 2]; int ans = 0x7fffffff; void input() { scanf("%d", &N); for (int i = 1; i N - 1) return false; bound[nx][ny] = 5; } // 3구역 for (int j = 0; j N - 1 || ny N - 1) return fa..
-
[백준 20057] 마법사 상어와 토네이도C 프로그래밍/BOJ 2022. 10. 10. 15:35
https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net #include int N; int A[499 + 2][499 + 2]; int R[499 + 2][499 + 2];// debug int percent[9] = { 1, 1, 2, 7, 7, 2, 10, 10, 5}; int lookup[4][2][10] = { // 1 1 2 7 7 2 10 10 5 a // 좌 {{-1, 1, -2, -1, 1, 2, -1, ..
-
[백준 20056] 마법사 상어와 파이어볼C 프로그래밍/BOJ 2022. 10. 10. 15:34
https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net #include #include #include int N, M, K; struct _ft { int idx;// 벡터의 몇번째 칸에 위치해 있는가 int r, c; int m, d, s; }; _ft Fire[10000 + 2]; _ft Tmp[10000 + 2]; std::vector Board[50 + 2][50 + 2]; int Same[4] = { ..
-
[백준 17837] 새로운 게임 2C 프로그래밍/BOJ 2022. 10. 10. 15:31
https://www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net #include #include #include int N, K; int board[12 + 2][12 + 2]; std::vector Chess[12 + 2][12 + 2];// 말 쌓아놓음 struct _ht { int idx;// 벡터의 몇번째 위치에 있는지 int x, y; int dir; }; _ht Horse[10 + 2]; void input() { scanf("%d %d", &N..