[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