-
https://www.acmicpc.net/problem/17143
17143번: 낚시왕
낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다.
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%2017143
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 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 댓글