[BOJ20056] 마법사 상어와 파이어볼
Updated:
문제
- n*n 격자에 파이어볼 m개, 위치 (r, c), 질량 m, 방향 d, 속력 s
- 방향 8방향, 상단부터 시계방향으로 0 ~ 7
- 파이어볼 이동 : d * s (파이어볼 겹쳐도 됨)
- 이동이 모두 끝나면, 2개 이상 파이어볼에는 다음 처리
- 파이어볼 모두 합치기
- 4개의 파이어볼로 나누기
- 질량 : sum/5, 속력 : sum/num
- 방향 모두 홀수||짝수 : (0, 2, 4, 6), 아니면 (1, 3, 5, 7)
- 질량이 0인 파이어볼은 소멸
입력
- n, m, k
- m개의 줄에 파이어볼의 정보 (r, c, m, s, d)
- 서로 다른 두 파이어볼의 위치가 같은 경우는 입력 X
출력
- 마법사 상어가 이동을 K번 명령한 후, 남아있는 파이어볼 질량의 합을 출력
설계
- k번만큼 파이어볼 이동, 겹친 파이어볼 분리
- 파이어볼을 넣을
vector<FIREBALL> fireballs
선언, 지형을 나타내는 2차원 배열vector<int> board[50][50]
선언 - 파이어볼 이동
- newBoard 선언, 이동하면 여기에 담아서 차후에 board에 덮어 씌우기
- 속도 : s % n
- 위치 nx, ny : (current_position + (d * s) + n) % n
- 파이어볼 분리
- newFireballs 선언, 차후에 fireballs 에 덮어 씌우기
- 2차원 지형을 전부 탐색하며 갯수에 따라 처리
- 1개면 바로 newFireballs에 저장
- 2개 이상이면 위 조건에 맞추어 구현
How I solved(click to github)
ref :
BOJ20056
Leave a comment