https://www.acmicpc.net/problem/17822
17822๋ฒ: ์ํ ๋๋ฆฌ๊ธฐ
๋ฐ์ง๋ฆ์ด 1, 2, ..., N์ธ ์ํ์ด ํฌ๊ธฐ๊ฐ ์์์ง๋ ์์ผ๋ก ๋ฐ๋ฅ์ ๋์ฌ์๊ณ , ์ํ์ ์ค์ฌ์ ๋ชจ๋ ๊ฐ๋ค. ์ํ์ ๋ฐ์ง๋ฆ์ด i์ด๋ฉด, ๊ทธ ์ํ์ i๋ฒ์งธ ์ํ์ด๋ผ๊ณ ํ๋ค. ๊ฐ๊ฐ์ ์ํ์๋ M๊ฐ์ ์ ์๊ฐ ์ ํ
www.acmicpc.net
๋ค ๋ง์๋๋ฐ ๋ฌธ์ ๋ฅผ ์ ๋๋ก ์ฝ์ง ์์์ ํ๋ ธ๋ค.
์ธ์ ํ์ง์์์ ํ๊ท ๊ฐ๋ณด๋ค +1, -1 ํด์ค๋ค ์ด๊ฒ ๋ง์ง๋ง ์ํ์ด์์ผ๋ฉด ๊ทธ ์ํ๋ก ์ดํฉ์ ์ถ๋ ฅํด์ผ๋๋ค.
์ ๋ต์ฝ๋
import java.io.*;
import java.util.*;
public class Main {
static int n;
static int m;
static int[][] circle;
static int cnt;
/**
* ๋งจ ๋ค ๋นผ์ ๋งจ ์์ผ๋ก ๊ฐ์ ธ์ค๊ณ ํ๋์ฉ ๋ค ๋ฐ๋ฉด ์๊ณ๋ฐฉํฅ ํ์
*
* @param arr
*/
public static void clock(int[] arr) {
int tmp = arr[m - 1];
for (int i = m - 1; i > 0; i--) {
arr[i] = arr[i - 1];
}
arr[0] = tmp;
}
/*
* ๋ฐ์๊ณ
*
* @param arr
*/
public static void counterClock(int[] arr) {
int tmp = arr[0];
for (int i = 0; i < m - 1; i++) {
arr[i] = arr[i + 1];
}
arr[m - 1] = tmp;
}
public static void roll(int di, int xi, int ki) {
if (di == 0) {
// ์๊ณ๋ฐฉํฅ xi๋ฐฐ์์ธ ์ํ์ ki์นธ ํ์
for (int j = 0; j < n; j++) {
// j+1๋ฒ์งธ๊ฐ x๋ฐฐ์๋?
if ((j + 1) % xi == 0) {
for (int k = 0; k < ki; k++) {
clock(circle[j]);
}
}
}
} else {
// ๋ฐ์๊ณ๋ฐฉํฅ
for (int j = 0; j < n; j++) {
// j+1๋ฒ์งธ๊ฐ x๋ฐฐ์๋?
if ((j + 1) % xi == 0) {
for (int k = 0; k < ki; k++) {
counterClock(circle[j]);
}
}
}
}
}
/**
* column ์ญ ๋๋ฉด์ ์ธ์ ํ์๊ฐ ๊ฐ์ผ๋ฉด ๋๋ค ์์ ๊ธฐ
*/
public static boolean check() {
int[][] adj = new int[n][m]; // 1๋ก ํ์ํ๊ณ , ๋์ค์ 1์ธ๊ฑฐ ์น๋ค 0์ผ๋ก ๋ฐ๊ธฐ
boolean find = false;
for (int j = 0; j < m; j++) {
for (int i = 0; i < n - 1; i++) {
// ๊ฐ์ ์ํ์์ ์ธ์ ํ๋ ๊ฒ๋ ํฌํจ...
if (circle[i][j] != 1001 && circle[i][j] == circle[i + 1][j]) {
adj[i][j] = 1;
adj[i + 1][j] = 1;
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (circle[i][j] != 1001 && j < m - 1 && circle[i][j] == circle[i][j + 1]) {
adj[i][j] = 1;
adj[i][j + 1] = 1;
}
if (j == m - 1) {
if (circle[i][j] != 1001 && circle[i][j] == circle[i][0]) {
adj[i][j] = 1;
adj[i][0] = 1;
}
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (adj[i][j] == 1) {
circle[i][j] = 1001;
find = true;
}
}
}
return find;
}
public static int sum() {
cnt = 0;
int res = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (circle[i][j] != 1001) {
cnt++;
res += circle[i][j];
}
}
}
return res;
}
/**
* ์ํ ์ ํ ์ ํ๊ท ๊ตฌํด์ ํ๊ท ๋ณด๋ค ํฐ์์์ 1๋นผ๊ณ , ์์์์ 1๋ํจ
*
* @param avg
*/
public static void process(double avg) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (circle[i][j] != 1001 && circle[i][j] > avg) {
circle[i][j]--;
} else if (circle[i][j] != 1001 && circle[i][j] < avg) {
circle[i][j]++;
}
}
}
}
public static void main(String[] args) throws Exception {
System.setIn(new FileInputStream("res/input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
int t = Integer.parseInt(st.nextToken());
int result = 0;
circle = new int[n][m];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < m; j++) {
circle[i][j] = Integer.parseInt(st.nextToken());
}
}
int[][] xdk = new int[t][3]; // i๋ฒ์งธ์ x, d, k
for (int i = 0; i < t; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < 3; j++) {
xdk[i][j] = Integer.parseInt(st.nextToken()); // x, d, k ์์๋๋ก ๋ค์ด์ด
}
int xi = xdk[i][0];
int di = xdk[i][1];
int ki = xdk[i][2];
roll(di, xi, ki);
boolean isAdj = check();
double res = sum();
if (!isAdj) {
// ์ํ ์ ํ ์ ํ๊ท ๊ตฌํด์ ํ๊ท ๋ณด๋ค ํฐ์์์ 1๋นผ๊ณ , ์์์์ 1๋ํจ
double avg = res / cnt;
process(avg);
result = (int) sum();
}else {
result = (int) res;
}
}
System.out.println(result);
}
}
๋ฐฉํฅ ๋ฐฐ์ด ๋ฐ๋ก ์์ด ์ฒ์ฒํ ๊ตฌํ์ผ๋ก ํ์๋ค.
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์! ๋ก๊ทธ์ธ ์ํด๋ ๋ฉ๋๋ค ^_^
๋ฐ์ํ
'OJ๐ผ > ์ค๋ต๋ ธํธ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][JAVA] 1149๋ฒ, 17404๋ฒ : RGB ๊ฑฐ๋ฆฌ1, RGB ๊ฑฐ๋ฆฌ2 (0) | 2024.03.19 |
---|---|
[BOJ][JAVA] 7576๋ฒ : ํ ๋งํ (0) | 2024.03.19 |
[BOJ][JAVA] 2110๋ฒ: ๊ณต์ ๊ธฐ ์ค์น (0) | 2024.03.06 |
[BOJ][JAVA] 1717๋ฒ: ์งํฉ์ ํํ, 1976๋ฒ: ์ฌํ๊ฐ์ (0) | 2024.03.03 |
[BOJ][JAVA] 17070๋ฒ: ํ์ดํ ์ฎ๊ธฐ๊ธฐ 1 (0) | 2024.03.03 |