05-16 05:32
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

miinsun

[BAEKJOON] ๋ฐฑ์ค€ ๊ทธ๋ฆฌ๋”” 10709 :: ๊ธฐ์ƒ์บ์Šคํ„ฐ ๋ณธ๋ฌธ

Algorithm/Baekjoon

[BAEKJOON] ๋ฐฑ์ค€ ๊ทธ๋ฆฌ๋”” 10709 :: ๊ธฐ์ƒ์บ์Šคํ„ฐ

miinsun 2022. 6. 13. 00:52

๐Ÿ’ฌ  ๋ฌธ์ œ ์„ค๋ช…

JOI์‹œ๋Š” ๋‚จ๋ถ๋ฐฉํ–ฅ์ด H ํ‚ฌ๋กœ๋ฏธํ„ฐ, ๋™์„œ๋ฐฉํ–ฅ์ด W ํ‚ฌ๋กœ๋ฏธํ„ฐ์ธ ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ด๋‹ค.
JOI์‹œ๋Š” ๊ฐ€๋กœ์™€ ์„ธ๋กœ์˜ ๊ธธ์ด๊ฐ€ 1ํ‚ฌ๋กœ๋ฏธํ„ฐ์ธ H × W ๊ฐœ์˜ ์ž‘์€ ๊ตฌ์—ญ๋“ค๋กœ ๋‚˜๋‰˜์–ด ์žˆ๋‹ค. ๋ถ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ i ๋ฒˆ์งธ, ์„œ์ชฝ์œผ๋กœ๋ถ€ํ„ฐ j ๋ฒˆ์งธ์— ์žˆ๋Š” ๊ตฌ์—ญ์„ (i, j) ๋กœ ํ‘œ์‹œํ•œ๋‹ค.

๊ฐ ๊ตฌ์—ญ์˜ ํ•˜๋Š˜์—๋Š” ๊ตฌ๋ฆ„์ด ์žˆ์„ ์ˆ˜๋„, ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๋ชจ๋“  ๊ตฌ๋ฆ„์€ 1๋ถ„์ด ์ง€๋‚  ๋•Œ๋งˆ๋‹ค 1ํ‚ฌ๋กœ๋ฏธํ„ฐ์”ฉ ๋™์ชฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ์˜ค๋Š˜์€ ๋‚ ์”จ๊ฐ€ ์ •๋ง ์ข‹๊ธฐ ๋•Œ๋ฌธ์— JOI์‹œ์˜ ์™ธ๋ถ€์—์„œ ๊ตฌ๋ฆ„์ด ์ด๋™ํ•ด ์˜ค๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.

์ง€๊ธˆ ๊ฐ ๊ตฌ์—ญ์˜ ํ•˜๋Š˜์— ๊ตฌ๋ฆ„์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค. ๊ธฐ์ƒ์ฒญ์—์„œ ์ผํ•˜๊ณ  ์žˆ๋Š” ์—ฌ๋Ÿฌ๋ถ„์€ ๊ฐ ๊ตฌ์—ญ์— ๋Œ€ํ•ด์„œ ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋ถ„๋’ค ์ฒ˜์Œ์œผ๋กœ ํ•˜๋Š˜์— ๊ตฌ๋ฆ„์ด ์˜ค๋Š”์ง€๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ผ์„ ๋งก์•˜๋‹ค.

๊ฐ ๊ตฌ์—ญ์— ๋Œ€ํ•ด์„œ ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋ถ„๋’ค ์ฒ˜์Œ์œผ๋กœ ํ•˜๋Š˜์— ๊ตฌ๋ฆ„์ด ์˜ค๋Š”์ง€๋ฅผ ๊ตฌํ•˜์—ฌ๋ผ.

 

๐Ÿ”จ  ์ž…์ถœ๋ ฅ ์˜ˆ

์ž…๋ ฅ 

  • ์ž…๋ ฅ์€ 1 + H ํ–‰์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.
  • ์ฒซ ๋ฒˆ์งธ ํ–‰์—๋Š” ์ •์ˆ˜ H, W (1 โ‰ฆ H โ‰ฆ 100, 1 โ‰ฆ W โ‰ฆ 100) ๊ฐ€ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ์ฃผ๊ณ  ์ฃผ์–ด์ง„๋‹ค.
  • ์ด๊ฒƒ์€ JOI์‹œ๊ฐ€ H × W ๊ฐœ์˜ ์ž‘์€ ๊ตฌ์—ญ์œผ๋กœ ๋‚˜๋‰˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ์ด์–ด์ง„ H ๊ฐœ์˜ ํ–‰์˜ i๋ฒˆ์งธ ํ–‰ (1 โ‰ฆ i โ‰ฆ H) ์—๋Š” W๋ฌธ์ž์˜ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค.
  • W ๊ฐœ์˜ ๋ฌธ์ž ์ค‘ j๋ฒˆ์งธ ๋ฌธ์ž (1 โ‰ฆ j โ‰ฆ W) ๋Š”, ๊ตฌ์—ญ (i, j) ์— ์ง€๊ธˆ ๊ตฌ๋ฆ„์ด ๋–  ์žˆ๋Š”์ง€ ์•„๋‹Œ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ๊ตฌ๋ฆ„์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์˜์–ด ์†Œ๋ฌธ์ž 'c' ๊ฐ€, ๊ตฌ๋ฆ„์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ž '.' ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

  • ์ถœ๋ ฅ์€ H ํ–‰์œผ๋กœ, ๊ฐ ํ–‰์—๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ W ๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ์ถœ๋ ฅ์˜ i ๋ฒˆ์งธ ํ–‰ j ๋ฒˆ์งธ ์ •์ˆ˜ (1 โ‰ฆ i โ‰ฆ H, 1 โ‰ฆ j โ‰ฆ W) ๋Š”, ์ง€๊ธˆ๋ถ€ํ„ฐ ๋ช‡ ๋ถ„ํ›„์— ์ฒ˜์Œ์œผ๋กœ ๊ตฌ์—ญ (i, j) ์— ๊ตฌ๋ฆ„์ด ๋œจ๋Š”์ง€๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.
  • ๋‹จ, ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์—ญ (i, j) ์— ๊ตฌ๋ฆ„์ด ๋–  ์žˆ์—ˆ๋˜ ๊ฒฝ์šฐ์—๋Š” 0์„, ๋ช‡ ๋ถ„์ด ์ง€๋‚˜๋„ ๊ตฌ๋ฆ„์ด ๋œจ์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ 1)

3 4
c..c
..c.
....

 

์˜ˆ์ œ ์ถœ๋ ฅ 1)

0 1 2 0
-1 -1 0 1
-1 -1 -1 -1

 

์˜ˆ์ œ ์ž…๋ ฅ 2)

6 8
.c......
........
.ccc..c.
....c...
..c.cc..
....c...

 

์˜ˆ์ œ ์ถœ๋ ฅ 2)

-1 0 1 2 3 4 5 6
-1 -1 -1 -1 -1 -1 -1 -1
-1 0 0 0 1 2 0 1
-1 -1 -1 -1 0 1 2 3
-1 -1 0 1 0 0 1 2
-1 -1 -1 -1 0 1 2 3

โ€‹

โ€‹

๐Ÿ’ป  Main.java

/* ๋ฐฑ์ค€ ๊ทธ๋ฆฌ๋””  - 10709 :: ๊ธฐ์ƒ์บ์Šคํ„ฐ */
import java.util.*;

public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int h = sc.nextInt();	// ์ง€์—ญ์˜ ๋†’์ด
		int w = sc.nextInt();	// ์ง€์—ญ์˜ ๋„“์ด

		char[][] board = new char[h][w];
		int[][] answer = new int[h][w];		// ์ •๋‹ต ์ €์žฅ ๋ฐฐ์—ด
		
		// answer๋ฐฐ์—ด -1๋กœ ์ฑ„์šฐ๊ธฐ
		for(int[] tmp : answer) {
			Arrays.fill(tmp, -1);
		}
		
		// ์ง€์—ญ ๋‚ ์”จ ์ •๋ณด ์ž…๋ ฅ
		for(int i = 0; i < h; i++) {
			String s = sc.next();
			for(int j = 0; j < w; j++) {
				board[i][j] = s.charAt(j);
				if(board[i][j] == 'c')
					answer[i][j] = 0;
			}
		}
		
		
		// ๊ตฌ๋ฆ„์„ ์ง€๋‚˜๊ฐˆ๋•Œ๋งˆ๋‹ค answer++
		for(int i = 0; i < h; i++) {
			for(int j = 1; j < w; j++) {
				if(answer[i][j - 1] != -1 && answer[i][j] != 0) {
					answer[i][j] = answer[i][j - 1] + 1;
				}
			}
		}
		
		// ์ •๋‹ต ์ถœ๋ ฅ
		for(int i = 0; i < h; i++) {
			for(int j = 0; j < w; j++) {
				System.out.print(answer[i][j] + " ");
			}
			System.out.println();
		}
		
		sc.close();
	}
}
Comments