[BOJ21611] 마법사 상어와 블리자드
Updated:
문제
- 상어가 구슬 제거
- 구슬 빈 칸 채우기
- 4개 연속 같은 수 폭발
- 빈칸 채우기 (4개 연속 같은 수 없을 때까지 폭발 반복)
- 그룹 만들어 사이즈, 번호 순으로 정렬
입력
- n, m
- 격자에 구슬정보
- m개 줄에 d, s
출력
- 첫째 줄에 1×(폭발한 1번 구슬의 개수) + 2×(폭발한 2번 구슬의 개수) + 3×(폭발한 3번 구슬의 개수)를 출력
설계
- 2차원 배열을 회오리 모양으로 돌아서 모두 체크하는 로직 만들기
- 빈칸(==0)을 빼고 temp 배열에 모두 넣기
- 격자에 temp 다시 넣고 나머지는 0으로 채워 moveBalls() 함수 정의
- bomb() 함수를 통해 매번 폭발하는지 체크
- bomb이 true면 moveBalls() 호출
- 그룹핑 하는 함수 정의
피드백
- 말 그대로 구현하면 되는 문제라 생각보다 쉬웠다.
- 여기서 큰 문제가 있었는데, 회오리 모양으로 돌 때 격자 밖의 수를 바꾸는 실수가 있었다.
- 격자 밖이라 별 문제 없을 줄 알았는데, 글로벌 변수로 선언한 m이 자꾸 바뀌어서 자꾸 틀렸다.
- 디버깅을 찬찬히해서 문제의 원인을 알았고 메모리 관점에서 유의 깊게 코딩해야함을 알았다.
- c 메모리 구조에 대한 공부를 다시 해봐야겠다.
How I solved(click to github)
ref :
BOJ21611
Leave a comment