๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/13986)
< Gravity >
๋ฌธ์ ํ์ด
'o' ์์น์์ ์๋๋ก ํ์ํ๋ฉฐ ๋น์นธ์ธ ๊ณณ์ผ๋ก ์ด๋ํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
import java.util.StringTokenizer;
public class _13986_ { // Gravity
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
char[][] arr = new char[n][m];
Stack<int[]> stack = new Stack<>();
for (int i = 0; i < n; i++) {
String str = bf.readLine();
for (int j = 0; j < m; j++) {
arr[i][j] = str.charAt(j);
if (arr[i][j] == 'o') {
stack.add(new int[] { i, j });
}
}
}
while (!stack.isEmpty()) {
int position[] = stack.pop();
int result = position[0];
for (int i = position[0] + 1; i < n; i++) {
if (arr[i][position[1]] == '.') {
result = i;
} else {
break;
}
}
arr[position[0]][position[1]] = '.';
arr[result][position[1]] = 'o';
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
bw.write(arr[i][j]);
}
bw.write("\n");
}
bw.flush();
}Add commentMore actions
}
๋ณ์)
n, m : ๋ฐฐ์ด ํฌ๊ธฐ
arr : ๊ทธ๋ฆฌ๋
stack : ์ฌ๊ณผ ์์น
position : ํ์ฌ ์ฌ๊ณผ ์์น
result : ์ด๋ ์์น
ํ, ์ด์ ์ ๋ ฅ๋ฐ๋๋ค. ํ, ์ด ํฌ๊ธฐ๋งํผ ๊ทธ๋ฆฌ๋ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ arr์ ์ ์ฅํ๋ฉด์ ์ฌ๊ณผ๊ฐ ์๋ ์์น๋ผ๋ฉด stack์๋ ์ ์ฅํ๋ค. stack์ด ๋น ๋๊น์ง ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) stack pop
2) ํ์ฌ ์์น์์ ์๋๋ก ํ์ํ๋ฉด์ ๋น์ด์๋ค๋ฉด result ๊ฐ ์ ๋ฐ์ดํธ, ๋น์ด์์ง ์๋ค๋ฉด ๋ ์ด์ ์ด๋ํ ์ ์์ผ๋ฏ๋ก ์ข ๋ฃ
3) ํ์ฌ ์์น๋ฅผ ๋น์นธ์ผ๋ก ์ ์ฅ, ์ด๋ํ ์ ์๋ ์์น์ ์ฌ๊ณผ ์ ์ฅ
์ต์ข ๋ฐฐ์ด arr์ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 9770_GCD (1) | 2025.06.10 |
---|---|
[Baekjoon] 5966_Cow Cotillion (1) | 2025.06.09 |
[Baekjoon] 7585_Brackets (1) | 2025.05.29 |
[Baekjoon] 24570_Harp Tuning (1) | 2025.05.28 |
[Baekjoon] 9863_Calling All Programmers (1) | 2025.05.27 |