๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 13986_Gravity

๋ฟŒ์•ผ._. 2025. 5. 30. 16:27
๋ฌธ์ œ(์ถœ์ฒ˜: 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์„ ์ถœ๋ ฅํ•œ๋‹ค.