-
https://www.acmicpc.net/problem/17143
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%2017143
해당 문제는 map이 주어지고 시간이 지난 뒤잡은 상어의 크기 합을 구하는 문제다
상어에 관련 데이터가 많아 상어 클래스를 만들어서 진행했으며,
상어를 이동시키는 부분에서 체크를 위해 배열을 2개 선언하거나 배열 하나와
다른 자료구조를 사용하는 방법이 있으며
배열 하나와 ArrayList를 사용해서 해결했다.
map 입력할 때 상어 정보를 list에도 같이 넣어준다.
1. 사람은 오른쪽으로 한 칸씩 이동한다.
2. 땅에서 가장 가까운 상어를 잡는다. (잡으면 리스트에서 제거)
3. 상어가 이동한다 각자 이동방향으로 속도만큼
여기서 중요한 부분이 있는데, 일반적으로 돌리게 되면 시간 초과가 발생한다.
그래서 연산을 해야 하는데,
(열 - 1) * 2는 해당 열의로 돌아오는데 걸리는 횟수
(행 - 1) * 2는 해 다행으로 돌아오는데 걸리는 횟수
해당 부분을 잘 체크해서 연산을 해주면 된다.
4. 이동을 끝냈는데 해당 자리에 상어가 없으면 상어를 이동시킨다.
5. 상어가 있으면 크기 비교를 통해 큰 상어만 남겨둔다. 여기서 사라진 상어를 list에서 지워준다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 10830 행렬 제곱 JAVA (0) 2021.11.14 Baekjoon 11401 이항 계수 3 JAVA (0) 2021.11.14 Baekjoon 14891 톱니바퀴 JAVA (0) 2021.11.14 Baekjoon 4358 생태학 JAVA (0) 2021.11.14 Baekjoon 11758 CCW JAVA (0) 2021.11.14 댓글