Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
반응형
문제
풀이
궁수를 배치하는 경우의 수를 모두 탐색하여 해당 배치에서 최대 몇 명의 적을 죽일 수 있는지 확인하여 최댓값을 구하면 되는 부르트 포스 문제이다.
거리가 같다면 왼쪽의 적부터 공격하는 것과 궁수들이 동일한 적을 공격할 수 있다는 것을 주의 하며 구현하자.
ArrayArcher(): 3명의 궁수를 배열하는 모든 경우의 수를 탐색. isArcherPosition[]에 해당 궁수가 배치되면 true 값을 저장하여, 배열이 끝나면 StartAttack()을 호출.
StartAttack(): 궁수가 있는 위치로부터 왼쪽에서 가장 가까운 적을 찾아 aimEnemyPos[3][2]에 저장한다. 만약 궁수의 공격 범위보다 탐색하는 칸의 거리가(nowDistance) 더 멀거나, 현재의 가장 가까운 적의 거리 minDist보다 nowDistance가 크다면 더 이상 탐색할 필요가 없으므로 break 한다.
이후에 적들이 한 칸씩 내려가도록 MoveEnemy()를 호출하고 자신을 turn을 +1 한 후 재귀 호출해준다.
구현이 약간 까다로워 실수가 많이 일어났다. 예제가 많이 주어지지 않았다면 왜 틀렸는지도 몰랐을 것 같다.
코드
반응형
'알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] No.17136 - 색종이 붙이기 (C++) (0) | 2020.10.29 |
---|---|
[백준] No.1543 - 문서 검색 (C++) (0) | 2020.10.26 |
[백준] No. 1038 - 감소하는 수 (C++) (0) | 2020.10.24 |
[백준] No. 14500 - 테트로미노 (C++) (0) | 2020.10.19 |
[백준] NO.12100 - 2048 (Easy)(C++) (0) | 2020.10.19 |
댓글