반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 최소 스패닝 트리 자바
- 나누어 떨어지는 숫자 배열 java
- 최단 경로 알고리즘
- 가운데 글자 가져오기 java
- 청년 Ai Big Data 아카데미
- codeup 1020 자바
- 최소 스패닝 트리
- 빅데이터분석기사
- 프로그래머스 가운데 글자 가져오기 파이썬
- 트리의 지름 자바
- 트리의 지름 java
- 가운데 글자 가져오기 python
- 나누어 떨어지는 숫자 배열 python
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- 프로그래머스 가운데 글자 가져오기 python
- 청년 AI Big Data 아카데미 13기
- m1 docker
- docker 삭제
- 프로그래머스 가운데 글자 가져오기 자바
- 코드업 1020 자바
- 코드업 1020 java
- 가운데 글자 가져오기 자바
- 핸즈온 머신러닝
- 빅분기실기
- m1 docker install
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- docker 완전 삭제
- codeup 1020 java
- docker remove
- 가운데 글자 가져오기 파이썬
Archives
- Today
- Total
NineTwo meet you
[백준/자바] 20056 마법사 상어와 파이어볼 본문
반응형
문제
어른 상어가 마법사가 되었고, 파이어볼을 배웠다.
마법사 상어가 크기가 N×N인 격자에 파이어볼 M개를 발사했다. 가
장 처음에 파이어볼은 각자 위치에서 이동을 대기하고 있다. i번 파이어볼의 위치는 (ri, ci), 질량은 mi이고, 방향은 di, 속력은 si이다. 위치 (r, c)는 r행 c열을 의미한다.
격자의 행과 열은 1번부터 N번까지 번호가 매겨져 있고, 1번 행은 N번과 연결되어 있고, 1번 열은 N번 열과 연결되어 있다.
파이어볼의 방향은 어떤 칸과 인접한 8개의 칸의 방향을 의미하며, 정수로는 다음과 같다.
7 | 0 | 1 |
6 | 2 | |
5 | 4 | 3 |
마법사 상어가 모든 파이어볼에게 이동을 명령하면 다음이 일들이 일어난다.
- 모든 파이어볼이 자신의 방향 di로 속력 si칸만큼 이동한다.
- 이동하는 중에는 같은 칸에 여러 개의 파이어볼이 있을 수도 있다.
- 이동이 모두 끝난 뒤, 2개 이상의 파이어볼이 있는 칸에서는 다음과 같은 일이 일어난다.
- 같은 칸에 있는 파이어볼은 모두 하나로 합쳐진다.
- 파이어볼은 4개의 파이어볼로 나누어진다.
- 나누어진 파이어볼의 질량, 속력, 방향은 다음과 같다.
- 질량은 ⌊(합쳐진 파이어볼 질량의 합)/5⌋이다.
- 속력은 ⌊(합쳐진 파이어볼 속력의 합)/(합쳐진 파이어볼의 개수)⌋이다.
- 합쳐지는 파이어볼의 방향이 모두 홀수이거나 모두 짝수이면, 방향은 0, 2, 4, 6이 되고, 그렇지 않으면 1, 3, 5, 7이 된다.
- 질량이 0인 파이어볼은 소멸되어 없어진다.
마법사 상어가 이동을 K번 명령한 후, 남아있는 파이어볼 질량의 합을 구해보자.
입력
첫째 줄에 N, M, K가 주어진다.
둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다.
파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다.
서로 다른 두 파이어볼의 위치가 같은 경우는 입력으로 주어지지 않는다.
출력
마법사 상어가 이동을 K번 명령한 후, 남아있는 파이어볼 질량의 합을 출력한다.
제한
- 4 ≤ N ≤ 50
- 0 ≤ M ≤ N2
- 1 ≤ K ≤ 1,000
- 1 ≤ ri, ci ≤ N
- 1 ≤ mi ≤ 1,000
- 1 ≤ si ≤ 1,000
- 0 ≤ di ≤ 7
예제 입력 1
4 2 1
1 1 5 2 2
1 4 7 1 6
예제 출력 1
8
예제 입력 2
4 2 2
1 1 5 2 2
1 4 7 1 6
예제 출력 2
8
예제 입력 3
4 2 3
1 1 5 2 2
1 4 7 1 6
예제 출력 3
0
예제 입력 4
7 5 3
1 3 5 2 4
2 3 5 2 6
5 2 9 1 7
6 2 1 3 5
4 4 2 4 2
예제 출력 4
9
설명
구현 문제다.
파이어볼의 이동 중 범위를 넘어갔을 때 적절한 처리를 해야 한다.
또한
- 합쳐지는 파이어볼의 방향이 모두 홀수이거나 모두 짝수이면, 방향은 0, 2, 4, 6이 되고, 그렇지 않으면 1, 3, 5, 7이 된다.
해당 문제의 뜻은 파이어볼이 나눠진다는 의미가 아니고 해당 자리에 방향이 4개로 쌓인다는 것을 의미한다.
근데 시간 초과는 아니지만 시간이 겁나 오래 걸리기 때문에 문제를 다시 풀어볼 필요가 있다고 생각한다.
코드
반응형
'프로그래밍 문제 > 백준' 카테고리의 다른 글
[백준/자바] 21610 마법사 상어와 비바라기 (0) | 2021.10.04 |
---|---|
[백준/자바] 20058 마법사 상어와 파이어스톰 (0) | 2021.09.30 |
[백준/자바] 14499 주사위 굴리기 (0) | 2021.09.26 |
[백준/자바] 19236 청소년 상어 (0) | 2021.09.26 |
[백준/자바] 17143 낚시왕 (0) | 2021.09.25 |
Comments