https://www.acmicpc.net/problem/17143
필요한 상어에 대한 정보를 담아서 구조체를 만든다.
이후에는 착실하게 시뮬레이션을 진행해주면 된다.
나 같은 경우에는 이전에 나무재테크 문제를 풀 때를 떠올려서, 한 칸에 상어가 여러 마리 들어가는 경우가 생기기 때문에 배열로 벡터를 잡았다.
먼저 상어의 이동과 관련된 구현이다.
문제에서 상어의 속력은 1000까지 가능하다고 했는데, 이 부분에서 나름 연산의 횟수를 줄여보겠다고 행과 열의 길이를 활용해서 모듈러 연산을 사용했다.
그런데 생각하지 못한 부분이 있었어서 프린트를 찍어가며 디버깅을 하는 데에 애를 먹었다.
그냥 속편하게 속도만큼 반복문을 돌리면서 (완벽한 통제를 위해서 for문을 사용하는 것이 낫겠다) 속도만큼 칸을 이동해주고, 이동한 칸이 범위를 벗어난다면 다시 바로잡아주는 식으로 하는 것이 조금 더 쉽고 직관적으로 구현할 수 있는 방법인 것 같다.
다른 부분은 상어가 먹히는 부분이다.
나는 일단 상어는 다 칸에 들어갈 수 있고, 그 이후에 가장 큰 상어를 찾아서 그 상어만 두고 나머지 상어는 다 제거하는 방식으로 구현을 했다.
'알고리즘 문제 풀이 > 백준 온라인 저지' 카테고리의 다른 글
백준 11050번: 이항 계수1 (C++) (0) | 2019.08.05 |
---|---|
백준 17142번: 연구소 3 (C++) (0) | 2019.08.05 |
백준 16235번: 나무 재테크 (C++) (0) | 2019.07.30 |
백준 16234번: 인구 이동 (C++) (0) | 2019.07.26 |
백준 17281번: 야구 ⚾ (C++) (0) | 2019.07.26 |