티스토리 뷰
SW Expert Academy :: SWEA :: 5653 :: 줄기세포배양
출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRJ8EKe48DFAUo
#include <bits/stdc++.h>
using namespace std;
struct cell {
int life, x, y;
};
int t, tc, ans;
int N, M, K;
int J[450][450];
int dx[] = { 0,0,1,-1 }, dy[] = { 1,-1,0,0 };
queue<cell> q[11];
void input() {
for (int i = 0;i < 11;i++)while (!q[i].empty()) q[i].pop();
ans = 0; memset(J, 0, sizeof(J)); cin >> N >> M >> K;
for (int i = 0; i < N; ++i) for (int j = 0; j < M; ++j) {
cin >> J[i + 175][j + 175];
if (J[i + 175][j + 175]) {
q[J[i + 175][j + 175]].push({ 2 * J[i + 175][j + 175], i + 175, j + 175 });
}
}
}
void cal() {
for (int i = 0; i <= K; ++i) {
for (int j = 10; j >= 1; --j) {
int q_s = q[j].size();
for (int k = 0; k < q_s; ++k) {
cell cl = q[j].front(); q[j].pop();
if (cl.life > j) {
if (J[cl.x][cl.y]>0) {
J[cl.x][cl.y] *= -1; ans++;
}
q[j].push({ cl.life - 1,cl.x,cl.y });
}
else if (cl.life == j) {
q[j].push({ j - 1,cl.x,cl.y });
for (int l = 0; l < 4; ++l) {
int nx = cl.x + dx[l];int ny = cl.y + dy[l];
if (J[nx][ny]) continue;
q[j].push({ 2 * j,nx,ny });J[nx][ny] = j;
}
}
else if (j > cl.life && cl.life) q[j].push({ cl.life - 1,cl.x,cl.y });
else ans--;
}
}
}
}
int main() {
ios::sync_with_stdio(false); cin.tie(0);
cin >> t;
for (tc = 1; tc <= t; ++tc) {
input(); cal();
cout << "#" << tc << " " << ans << '\n';
}
return 0;
}
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA 5789] 현주의 상자 바꾸기 (0) | 2018.10.10 |
---|---|
[SWEA 5656] 벽돌 깨기 (0) | 2018.09.29 |
[SWEA 5658] 보물상자 비밀번호 (0) | 2018.09.21 |
[SWEA 5644] 무선 충전 (0) | 2018.09.21 |
[SWEA 5648] 원자 소멸 시뮬레이션 (0) | 2018.09.20 |
- Total
- Today
- Yesterday
- 트렌드
- 17144
- DP
- 2018 카카오 블라인드 채용
- hackerrank
- STL
- DFS
- 17142
- string
- boj
- 삼성
- SWEA
- 17143
- 입출력
- SW Expert Academy
- 알고리즘
- 백준
- 2018 KAKAO BLIND RECRUITMENT
- 새로운 게임 2
- scanf
- 게리맨더링 2
- 미세먼지 안녕!
- 17779
- 역량 테스트
- 17837
- 시간 복잡도
- 연구소 3
- 이차원 배열과 연산
- 17140
- 팁
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |