반응형
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
- 프로그래머스 가운데 글자 가져오기 파이썬
- 최단 경로 알고리즘
- m1 docker install
- 코드업 1020 java
- 나누어 떨어지는 숫자 배열 python
- m1 docker
- 최소 스패닝 트리 자바
- docker remove
- 가운데 글자 가져오기 java
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- docker 삭제
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- 가운데 글자 가져오기 python
- 나누어 떨어지는 숫자 배열 java
- 가운데 글자 가져오기 자바
- 코드업 1020 자바
- 청년 Ai Big Data 아카데미
- 핸즈온 머신러닝
- 프로그래머스 가운데 글자 가져오기 python
- 프로그래머스 가운데 글자 가져오기 자바
- 청년 AI Big Data 아카데미 13기
- codeup 1020 자바
- 빅분기실기
- 최소 스패닝 트리
- 트리의 지름 자바
- docker 완전 삭제
- 빅데이터분석기사
- 가운데 글자 가져오기 파이썬
- codeup 1020 java
- 트리의 지름 java
Archives
- Today
- Total
NineTwo meet you
[백준/자바] 17822 원판 돌리기 본문
반응형
문제
반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다.
원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다.
각각의 원판에는 M개의 정수가 적혀있고, i번째 원판에 적힌 j번째 수의 위치는 (i, j)로 표현한다.
수의 위치는 다음을 만족한다.
- (i, 1)은 (i, 2), (i, M)과 인접하다.
- (i, M)은 (i, M-1), (i, 1)과 인접하다.
- (i, j)는 (i, j-1), (i, j+1)과 인접하다. (2 ≤ j ≤ M-1)
- (1, j)는 (2, j)와 인접하다.
- (N, j)는 (N-1, j)와 인접하다.
- (i, j)는 (i-1, j), (i+1, j)와 인접하다. (2 ≤ i ≤ N-1)
아래 그림은 N = 3, M = 4인 경우이다.
원판의 회전은 독립적으로 이루어진다. 2번 원판을 회전했을 때, 나머지 원판은 회전하지 않는다.
원판을 회전시킬 때는 수의 위치를 기준으로 하며, 회전시킨 후의 수의 위치는 회전시키기 전과 일치해야 한다.
원판을 아래와 같은 방법으로 총 T번 회전시키려고 한다.
원판의 회전 방법은 미리 정해져 있고, i번째 회전할때 사용하는 변수는 xi, di, ki이다.
- 번호가 xi의 배수인 원판을 di방향으로 ki칸 회전시킨다. di가 0인 경우는 시계 방향, 1인 경우는 반시계 방향이다.
- 원판에 수가 남아 있으면, 인접하면서 수가 같은 것을 모두 찾는다.
- 그러한 수가 있는 경우에는 원판에서 인접하면서 같은 수를 모두 지운다.
- 없는 경우에는 원판에 적힌 수의 평균을 구하고, 평균보다 큰 수에서 1을 빼고, 작은 수에는 1을 더한다.
원판을 T번 회전시킨 후 원판에 적힌 수의 합을 구해보자.
입력
첫째 줄에 N, M, T이 주어진다.
둘째 줄부터 N개의 줄에 원판에 적힌 수가 주어진다. i번째 줄의 j번째 수는 (i, j)에 적힌 수를 의미한다.
다음 T개의 줄에 xi, di, ki가 주어진다.
출력
원판을 T번 회전시킨 후 원판에 적힌 수의 합을 출력한다.
제한
- 2 ≤ N, M ≤ 50
- 1 ≤ T ≤ 50
- 1 ≤ 원판에 적힌 수 ≤ 1,000
- 2 ≤ xi ≤ N
- 0 ≤ di ≤ 1
- 1 ≤ ki < M
설명
구현문제로 몇가지 주의 사항이 있다.
- 번호가 xi의 배수인 원판을 di방향으로 ki칸 회전시킨다. di가 0인 경우는 시계 방향, 1인 경우는 반시계 방향이다.
- 원판에 수가 남아 있으면, 인접하면서 수가 같은 것을 모두 찾는다.
- 그러한 수가 있는 경우에는 원판에서 인접하면서 같은 수를 모두 지운다.
- 없는 경우에는 원판에 적힌 수의 평균을 구하고, 평균보다 큰 수에서 1을 빼고, 작은 수에는 1을 더한다.=> 평균은 double 실수형!!=> 큰 수는 -1, 작은 수는 +1 같은 수는 pass=> 평균 구할때 나누는 수가 0인 경우 고려하기!!
코드
반응형
'프로그래밍 문제 > 백준' 카테고리의 다른 글
[백준/자바] 5373 큐빙 (0) | 2021.09.18 |
---|---|
[백준/자바] 17140 이차원 배열과 연산 (0) | 2021.09.14 |
[백준/자바] 17144 미세먼지 안녕! (0) | 2021.09.10 |
[백준/자바] 2468 안전 영역 (0) | 2021.08.24 |
[백준/자바] 10875 뱀 (0) | 2021.08.11 |
Comments