문제를 풀면서 많이 헤매었는데, 주의해야 할 것을 위주로 작성해봐야겠다.
문제 풀이 방식
문제 풀이 방식은 사실 특별할 것은 없는데, 아래의 문제 설명처럼 파이어볼을 이동하고 나누는 과정을 그대로 구현하면 된다.
주의할 점
이 문제를 쉽게 접근하기 위해서는 ArrayList를 2차원 배열로 선언하는 것이 중요하다는 것을 인지했으면 더 빨리 풀 수 있었을 것 같다.
2차원의 List 배열을 생성하여 주고 이 2차원 배열의 리스트에 fireball을 담을 것이다. List를 선언했다면 반복문을 통해 초기화시켜주는 것을 꼭 잊지 말자.
static List<fire>[][] map = new ArrayList[n+1][n+1];
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
map[i][j] = new ArrayList<>();
}
}
그다음으로 주의해야 하는 것은 파이어 볼이 이동할 때, 선언한 맵이 연결되어 있다는 것이다. 그러므로 인덱스를 초과했을 때 맵이 연결될 수 있도록 반드시 신경 써줘야 한다.
소스코드
'알고리즘' 카테고리의 다른 글
[boj 3273] 두 수의 합 - 투 포인터 (0) | 2021.02.24 |
---|---|
[boj 1300] K번째 수 - 이분 탐색 (1) | 2021.02.14 |
이분 탐색 코드로 구현하기 - 자바 (0) | 2021.02.13 |
버블 정렬 코드로 구현 하기 - 자바 (0) | 2021.02.07 |
프로그래머스 - 카카오프렌즈 컬러링북 (0) | 2021.01.31 |