반응형
SW 역량테스트 합격하기 A형 강의 오픈!! (인프런 바로가기)
https://www.codetree.ai/training-field/frequent-problems/problems/cleaning-is-joyful
청소는 즐거워 문제 풀이는 BOJ 20057 : 마법사 상어와 토네이도와 같다.
#include <stdio.h>
#define MAX (500 + 20)
int T;
int N;
int MAP[MAX][MAX];
void input()
{
scanf("%d", &N);
for (int r = 0; r < N; r++)
for (int c = 0; c < N; c++)
scanf("%d", &MAP[r][c]);
}
/* 순서대로 왼쪽, 아래, 오른쪽, 위 */
int dr[] = { 0, 1, 0, -1 };
int dc[] = { -1, 0, 1, 0 };
int ratio[9] = { 2, 10, 7, 1, 5, 10, 7, 1, 2 };
int moveR[4][10] =
{
{ -2, -1, -1, -1, 0, 1, 1, 1, 2, 0 },
{ 0, 1, 0, -1, 2, 1, 0, -1, 0, 1 },
{ -2, -1, -1, -1, 0, 1, 1, 1, 2, 0 },
{ 0, -1, 0, 1, -2, -1, 0, 1, 0, -1 }
};
int moveC[4][10] =
{
{ 0, -1, 0, 1, -2, -1, 0, 1, 0, -1 },
{ -2, -1, -1, -1, 0, 1, 1, 1, 2, 0 },
{ 0, 1, 0, -1, 2, 1, 0, -1, 0, 1 },
{ -2, -1, -1, -1, 0, 1, 1, 1, 2, 0 }
};
int moveDust(int r, int c, int dir)
{
int ret, pos, dust;
ret = 0, pos = MAP[r][c];
for (int i = 0; i < 10; i++)
{
if (i == 9) dust = MAP[r][c]; /* 남아 있는 모래를 a로 이동 */
else
{
dust = pos * ratio[i] / 100;
MAP[r][c] -= dust;
}
int nr, nc;
nr = r + moveR[dir % 4][i];
nc = c + moveC[dir % 4][i];
if (nr < 0 || nr > N - 1 || nc < 0 || nc > N - 1) ret += dust;
else MAP[nr][nc] += dust;
}
return ret;
}
int simulate()
{
int outDust, dir, sr, sc, count;
sr = sc = N / 2;
outDust = dir = 0; /* 방향은 왼쪽부터 시작 */
count = 1;
for (int i = 0; i < N; i++)
{
for (int k = 0; k < count; k++)
{
sr += dr[dir % 4];
sc += dc[dir % 4];
outDust += moveDust(sr, sc, dir);
}
dir++;
for (int k = 0; k < count; k++)
{
sr += dr[dir % 4];
sc += dc[dir % 4];
outDust += moveDust(sr, sc, dir);
}
dir++;
count++;
}
sr += dr[dir % 4];
sc += dc[dir % 4];
outDust += moveDust(sr, sc, dir);
return outDust;
}
int main(void)
{
// scanf("%d", &T);
T = 1;
for (int tc = 1; tc <= T; tc++)
{
input();
printf("%d\n", simulate());
}
return 0;
}
반응형
'알고리즘 > [ADV] 삼성 SW 역량 테스트 A형' 카테고리의 다른 글
[코드트리] 놀이기구 탑승 (삼성 SW 역량테스트 2021 상반기 오전 1번) (0) | 2024.06.09 |
---|---|
[코드트리] 회전하는 빙하 (삼성 SW 역량테스트 2020 하반기 오후 2번) (0) | 2024.06.09 |
[코드트리] 원자 충돌 (삼성 SW 역량테스트 2020 하반기 오전 2번) (0) | 2024.06.09 |
[코드트리] 불안한 무빙워크 (삼성 SW 역량테스트 2020 하반기 오전 1번) (0) | 2024.06.09 |
[코드트리] 자율주행 전기차 (삼성 SW 역량테스트 2020 상반기 오후 2번) (0) | 2024.06.09 |
댓글