Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- django
- 코테
- CSV
- Python
- Linked list
- BFS
- Trie
- Priority Queue
- Data Structure
- hash table
- 구현
- 알고리즘
- Algorithm
- boj
- SWEA
- aws
- 시뮬레이션
- 모의SW역량테스트
- spring boot
- GitHub
- 코딩테스트
- gpdb
- JavaScript
- SQL
- 알고리듬
- Back tracking
- programmers
- Bruth Force
- Vue.js
- DFS
Archives
- Today
- Total
hotamul의 개발 이야기
[Algorihtm][C++] SWEA. 5644. [모의 SW 역량테스트] 무선 충전 본문
myt-algorithm-practice/Samsung SW Certi Adv
[Algorihtm][C++] SWEA. 5644. [모의 SW 역량테스트] 무선 충전
hotamul 2021. 11. 16. 21:30url: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRDL1aeugDFAUo
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
코드
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#define MAXM 100
#define MAXA 8
#define a 0
#define b 1
int T, M, A;
int move_cmd[2][MAXM + 1];
const int dr[] = { 0,-1,0,1,0 };
const int dc[] = { 0,0,1,0,-1 };
struct BCInfo {
int r, c, range, power;
};
BCInfo bc[MAXA];
struct Person {
int r, c;
};
Person person[2];
int _get_max(int value) {
return value > 0 ? value : -value;
}
int get_distance(const BCInfo bc_pos, const Person man_pos) {
int ret = _get_max(bc_pos.r - man_pos.r) + _get_max(bc_pos.c - man_pos.c);
return ret;
}
int solve() {
int ret = 0;
person[a] = { 1,1 };
person[b] = { 10,10 };
for (int time = 0; time <= M; time++) {
for (int i = 0; i < 2; i++) {
person[i].r += dr[move_cmd[i][time]];
person[i].c += dc[move_cmd[i][time]];
}
int in_range_cnt[2] = { 0, };
int in_bc_id[2][MAXA] = { 0, };
for (int i = 0; i < 2; i++) {
for (int id = 0; id < A; id++) {
if (bc[id].range >= get_distance(bc[id], person[i])) {
in_bc_id[i][in_range_cnt[i]++] = id;
}
}
}
int candi = 0;
if (in_range_cnt[a] == 0 || in_range_cnt[b] == 0) {
for (int i = 0; i < in_range_cnt[a]; i++) {
int tmp_bc_id = in_bc_id[a][i];
if (bc[tmp_bc_id].power > candi) {
candi = bc[tmp_bc_id].power;
}
}
for (int i = 0; i < in_range_cnt[b]; i++) {
int tmp_bc_id = in_bc_id[b][i];
if (bc[tmp_bc_id].power > candi) {
candi = bc[tmp_bc_id].power;
}
}
}
else {
for (int i = 0; i < in_range_cnt[a]; i++) {
for (int j = 0; j < in_range_cnt[b]; j++) {
int tmp_bc_id[2] = { in_bc_id[a][i], in_bc_id[b][j] };
int temp = bc[tmp_bc_id[a]].power + bc[tmp_bc_id[b]].power;
if (tmp_bc_id[a] == tmp_bc_id[b]) {
temp /= 2;
}
if (temp > candi) {
candi = temp;
}
}
}
}
ret += candi;
}
return ret;
}
int main() {
// freopen("sample_input.txt", "r", stdin);
scanf("%d", &T);
for (int tc = 1; tc <= T; tc++) {
scanf("%d %d", &M, &A);
for (int i = 0; i < 2; i++) {
for (int time = 1; time <= M; time++) {
scanf("%d", &move_cmd[i][time]);
}
}
for (int id = 0; id < A; id++) {
scanf("%d %d %d %d", \
&bc[id].c, &bc[id].r, &bc[id].range, &bc[id].power);
}
int ans = solve();
printf("#%d %d\n", tc, ans);
}
return 0;
}
'myt-algorithm-practice > Samsung SW Certi Adv' 카테고리의 다른 글
[Algorithm][C++] SWEA. 4014. [모의 SW 역량테스트] 활주로 건설 (0) | 2021.11.15 |
---|---|
[Algorithm][C++] SWEA 4340. [연습문제] 파이프 연결 (0) | 2021.11.10 |
[Algorithm][C++] 2112. [모의 SW 역량테스트] 보호 필름 (0) | 2021.11.05 |
[Algorithm][C++] SWEA 1953. [모의 SW 역량테스트] 탈주범 검거 (0) | 2021.11.05 |
[Algorithm][C++] JUNGOL 4211: [swat]애벌레 키우기2 (0) | 2021.11.04 |