일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 가운데 글자 가져오기 python
- 청년 AI Big Data 아카데미 13기
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- 가운데 글자 가져오기 자바
- 프로그래머스 가운데 글자 가져오기 자바
- docker 삭제
- 빅분기실기
- 코드업 1020 java
- 트리의 지름 java
- docker remove
- 핸즈온 머신러닝
- 청년 Ai Big Data 아카데미
- m1 docker install
- 프로그래머스 가운데 글자 가져오기 python
- 코드업 1020 자바
- 프로그래머스 가운데 글자 가져오기 파이썬
- 가운데 글자 가져오기 파이썬
- 최소 스패닝 트리
- docker 완전 삭제
- 최단 경로 알고리즘
- 빅데이터분석기사
- 가운데 글자 가져오기 java
- 최소 스패닝 트리 자바
- 나누어 떨어지는 숫자 배열 java
- 나누어 떨어지는 숫자 배열 python
- codeup 1020 자바
- codeup 1020 java
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- m1 docker
- 트리의 지름 자바
- Today
- Total
NineTwo meet you
[백준/자바] 20058 마법사 상어와 파이어스톰 본문
문제
마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다.
오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다.
위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 얼음의 양을 의미한다.
A[r][c]가 0인 경우 얼음이 없는 것이다.
파이어스톰을 시전하려면 시전할 때마다 단계 L을 결정해야 한다.
파이어스톰은 먼저 격자를 2L × 2L 크기의 부분 격자로 나눈다.
그 후, 모든 부분 격자를 시계 방향으로 90도 회전시킨다.
이후 얼음이 있는 칸 3개 또는 그 이상과 인접해있지 않은 칸은 얼음의 양이 1 줄어든다.
(r, c)와 인접한 칸은 (r-1, c), (r+1, c), (r, c-1), (r, c+1)이다.
아래 그림의 칸에 적힌 정수는 칸을 구분하기 위해 적은 정수이다.
마법사 상어는 파이어스톰을 총 Q번 시전하려고 한다. 모든 파이어스톰을 시전한 후, 다음 2가지를 구해보자.
- 남아있는 얼음 A[r][c]의 합
- 남아있는 얼음 중 가장 큰 덩어리가 차지하는 칸의 개수
얼음이 있는 칸이 얼음이 있는 칸과 인접해 있으면, 두 칸을 연결되어 있다고 한다. 덩어리는 연결된 칸의 집합이다.
입력
첫째 줄에 N과 Q가 주어진다. 둘째 줄부터 2N개의 줄에는 격자의 각 칸에 있는 얼음의 양이 주어진다.
r번째 줄에서 c번째 주어지는 정수는 A[r][c] 이다.
마지막 줄에는 마법사 상어가 시전한 단계 L1, L2, ..., LQ가 순서대로 주어진다.
출력
첫째 줄에 남아있는 얼음 A[r][c]의 합을 출력하고, 둘째 줄에 가장 큰 덩어리가 차지하는 칸의 개수를 출력한다. 단, 덩어리가 없으면 0을 출력한다.
제한
- 2 ≤ N ≤ 6
- 1 ≤ Q ≤ 1,000
- 0 ≤ A[r][c] ≤ 100
- 0 ≤ Li ≤ N
예제 입력 1
3 1
1 2 3 4 5 6 7 8
8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8
8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8
8 7 6 5 4 3 2 1
1 2 3 4 5 6 7 8
8 7 6 5 4 3 2 1
1
예제 출력 1
284
64
:
설명
구현문제다.
시간초과는 나지않았지만 당당하게 맞은 사람 중 제일 느린 코드였다. ㅎㅎ
문제를 좀 더 효율적으로 푸는 연습을 해야할 듯 싶다.
이 문제에서 가장 헷갈렸던 말이 얼음이 있는 칸 3개 또는 그 이상과 인접해있지 않은 칸은 얼음의 양이 1 줄어든다.였다.
이는 현재위치에서 상하좌우로 얼음이 없는 칸이 2개 이상인 경우라고 생각하면 된다!
코드
'프로그래밍 문제 > 백준' 카테고리의 다른 글
[백준/자바] 21611 마법사 상어와 블리자드 (0) | 2021.10.04 |
---|---|
[백준/자바] 21610 마법사 상어와 비바라기 (0) | 2021.10.04 |
[백준/자바] 20056 마법사 상어와 파이어볼 (0) | 2021.09.30 |
[백준/자바] 14499 주사위 굴리기 (0) | 2021.09.26 |
[백준/자바] 19236 청소년 상어 (0) | 2021.09.26 |