https://www.acmicpc.net/problem/17144
내 풀이:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
#include <stdio.h>
int arr[50][50], new_arr[50][50], dy[4], dx[4];
int main(void) {
int R, C, T, m1, m2, ni, nj, remain, val;
int ans = 0;
dy[0] = -1, dy[1] = 0, dy[2] = 1, dy[3] = 0, dx[0] = 0, dx[1] = 1, dx[2] = 0, dx[3] = -1;
scanf("%d %d %d", &R, &C, &T);
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
scanf("%d", &arr[i][j]);
new_arr[i][j] = 0;
}
}
for (int i = 2; i < R - 2; i++) {
if (arr[i][0] == -1) {
m1 = i;
m2 = i + 1;
arr[m1][0] = 0;
arr[m2][0] = 0;
break;
}
}
for (int t = 0; t < T; t++) {
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
remain = arr[i][j];
val = arr[i][j] / 5;
for (int d = 0; d < 4; d++) {
ni = i + dy[d];
nj = j + dx[d];
if (0 <= ni && ni < R && 0 <= nj && nj < C) {
if (nj != 0 || (ni != m1 && ni != m2)) {
new_arr[ni][nj] += val;
remain -= val;
}
}
}
new_arr[i][j] += remain;
}
}
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
arr[i][j] = new_arr[i][j];
new_arr[i][j] = 0;
}
}
for (int i = m1 - 2; i >= 0; i--) {
arr[i + 1][0] = arr[i][0];
}
for (int j = 1; j < C; j++) {
arr[0][j - 1] = arr[0][j];
}
for (int i = 1; i < m1 + 1; i++) {
arr[i - 1][C - 1] = arr[i][C - 1];
}
for (int j = C - 2; j >= 0; j--) {
arr[m1][j + 1] = arr[m1][j];
}
for (int i = m2 + 2; i < R; i++) {
arr[i - 1][0] = arr[i][0];
}
for (int j = 1; j < C; j++) {
arr[R - 1][j - 1] = arr[R - 1][j];
}
for (int i = R - 2; i >= m2; i--) {
arr[i + 1][C - 1] = arr[i][C - 1];
}
for (int j = C - 2; j >= 0; j--) {
arr[m2][j + 1] = arr[m2][j];
}
}
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
ans += arr[i][j];
}
}
printf("%d", ans);
}
|
시간: 36ms
Python으로만 알고리즘 문제를 풀어왔는데 B형 시험을 준비하기 위해서 C/C++ 혹은 Java가 필요하기에 C언어 공부를 시작하였다. 알고리즘 관련한 공부는 Python을 통하여 이미 익혔기 때문에 C언어의 문법을 익히고자 난이도가 비교적 쉬운 문제부터 시작하였다.
C언어로 풀어보는 백준 17281번: ⚾ (0) | 2020.03.21 |
---|---|
C언어로 백준 16236번: 아기 상어 (삼성 A형 기출 문제) (0) | 2020.03.17 |
C언어로 백준 15683: 감시 (0) | 2020.03.17 |
댓글 영역