티스토리 뷰
반응형
https://www.acmicpc.net/problem/20058
난이도 : 골드 4
맵을 나눠 90도로 회전하는 것이 헷갈렸습니다. 종이에 적어가며 푸니 쉽게 이해가 됐네요.
정답을 구할 때 dfs를 이용하여 칸 수를 세주며 총얼음의 양을 구했습니다.
전역 변수
int n = 맵 크기의 지수(2^n)
int size = 맵 크기
int map[][] = 문제에서 주어진 값
int dx[], dy[] = 좌표를 이동하기 위한 배열
int sum = 총 얼음의 양
메소드
void main
입력을 받고 명령어에 적절히 동작합니다.
동작이 끝나면 얼음의 양, 칸 수를 세줍니다.
(rotate, melt, answer 호출)
void rotate
명령어의 숫자 크기만큼의 배열을 시계 방향으로 90도 돌려줍니다. 현재 배열에서 돌렸을 때의 값을 next배열에 저장했습니다. 회전이 끝났을 때 map은 next를 참조하도록 했습니다.
저 한 줄을 작성하는데 꽤 오랜 시간이 걸렸네요.
void melt
3면 이상이 얼음이 아닌 칸을 녹입니다. 이때 동시에 얼음이 녹으므로 적절한 처리를 해주지 않을 시 한 칸이 녹아야 하는데 모든 칸이 녹을 수 있는 대참사가 벌어질 수 있습니다.
저는 오동작 방지를 위해 큐를 이용했습니다.
boolean check
파라미터로 받은 좌표값들이 정상 범위인지 확인합니다.
int answer
연결된 얼음들을 찾습니다. 연결된 얼음들의 칸 수를 세고 반환합니다.
얼음의 칸을 세며 총얼음의 양을 구하기 위해 sum에 더해줍니다.
(check 호출)
반응형
'문제풀이 > 백준 && 프로그래머스' 카테고리의 다른 글
[백준 1753] 최단경로 (자바) (0) | 2020.11.02 |
---|---|
[백준 20061] 모노미노도미노 2 (자바) (0) | 2020.10.28 |
[백준 20057] 마법사 상어와 토네이도 (자바) (0) | 2020.10.21 |
[백준 20056] 마법사 상어와 파이어볼 (자바) (3) | 2020.10.21 |
[백준 20055] 컨베이어 벨트 위의 로봇 (자바) (0) | 2020.10.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 카카오
- 신입
- 네이버
- 취준
- 시뮬레이션
- 레벨2
- 구현
- dfs
- 스프링
- 자료구조
- 백준
- 레벨4
- 프로젝트
- BFS
- 후기
- 그래프이론
- 그래프탐색
- 면접
- 플레
- 코딩테스트
- 실버
- 골드
- 게시판
- 스프링부트
- 최소스패닝트리
- 트리
- 프로그래머스
- 브루트포스
- 레벨3
- 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함