[Algorithm] ๐Ÿคž๋ฐฑ์ค€ 3005 ํฌ๋กœ์Šค์›Œ๋“œ ํผ์ฆ ์ณ๋‹ค๋ณด๊ธฐ

HaJingJingยท2021๋…„ 7์›” 1์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
89/119

0. ๋ฌธ์ œ

ํฌ๋กœ์Šค์›Œ๋“œ ํผ์ฆ์€ R*Cํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ฐ ์นธ์€ ๋น„์–ด์žˆ๊ฑฐ๋‚˜ ๋ง‰ํ˜€์žˆ๋‹ค. ํผ์ฆ์€ ๊ฐ€๋กœ(์™ผ์ชฝ->์˜ค๋ฅธ์ชฝ) ๋˜๋Š” ์„ธ๋กœ(์œ„->์•„๋ž˜)๋กœ ์—ฐ์†๋œ ๋นˆ ์นธ์— ๋‹จ์–ด๋ฅผ ์ฑ„์šฐ๋ฉด์„œ ํ‘ผ๋‹ค.

๋™ํ˜์ด๋Š” ํฌ๋กœ์Šค์›Œ๋“œ ํผ์ฆ์„ ํ’€์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Š” ํ’€๋ ค์žˆ๋Š” ํผ์ฆ์„ ์ณ๋‹ค๋ณธ๋‹ค. ๊ทธ๋Ÿฐ ํ›„์—, ๊ทธ๋Š” ๊ทธ ํผ์ฆ์—์„œ ์‚ฌ์ „์ˆœ์œผ๋กœ ์ œ์ผ ์•ž์„œ๋Š” ๋‹จ์–ด๋ฅผ ์ฐพ๋Š”๋‹ค. (๋‹จ์–ด๋Š” ์ ์–ด๋„ 2๊ธ€์ž์ด๋‹ค.)

ํฌ๋กœ์Šค์›Œ๋“œ ํผ์ฆ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์‚ฌ์ „์ˆœ์œผ๋กœ ์ œ์ผ ์•ž์„œ๋Š” ๋‹จ์–ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ
์ฒซ์งธ ์ค„์— R๊ณผ C (2 โ‰ค R, C โ‰ค 20)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. R๋Š” ํ–‰์˜ ๊ฐœ์ˆ˜, C๋Š” ์—ด์˜ ๊ฐœ์ˆ˜์ด๋‹ค. ๊ทธ ๋‹ค์Œ R๊ฐœ์˜ ์ค„์—” C๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ๊ฐ ๋ฌธ์ž๋Š” ์˜์–ด ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž ๋˜๋Š” '#'์ด๋ฉฐ, '#'์ธ ๊ฒฝ์šฐ์—๋Š” ๋ง‰ํ˜€์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

์ถœ๋ ฅ
์ฒซ์งธ ์ค„์— ์‚ฌ์ „์ˆœ์œผ๋กœ ์ œ์ผ ์•ž์„œ๋Š” ๋‹จ์–ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ •๋‹ต์ด ํ•ญ์ƒ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๋งŒ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

1. ์•„์ด๋””์–ด

๐Ÿ’ก ๊ฐ€๋กœ(์™ผ์ชฝโ†’์˜ค๋ฅธ์ชฝ)๋กœ 2๊ธ€์ž ์ด์ƒ์ธ ๋‹จ์–ด๋ฅผ ์ฐพ์•„ list์— ์ €์žฅ
๐Ÿ’ก ์„ธ๋กœ(์œ„โ†’์•„๋ž˜)๋กœ 2๊ธ€์ž ์ด์ƒ์ธ ๋‹จ์–ด๋ฅผ ์ฐพ์•„ list์— ์ €์žฅ
๐Ÿ’ก ๋‹จ์–ด๋ฅผ ๋‹ด์€ list๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์—ดํ•˜๊ณ  ์ฒซ๋ฒˆ์งธ ๋‹จ์–ด๋ฅผ ์ถœ๋ ฅ

2. ํ•ต์‹ฌ ํ’€์ด

  1. ๊ฐ€๋กœ(์™ผ์ชฝโ†’์˜ค๋ฅธ์ชฝ)๋กœ 2๊ธ€์ž ์ด์ƒ์ธ ๋‹จ์–ด๋ฅผ ์ฐพ์•„ list์— ์ €์žฅ
for(int i=0; i<r; i++) {
	String tmp = "";
	length = 0;
	for(int j=0; j<c; j++) {
		if(cross[i][j].equals("#")) {
			if(length >= 2) {
				list.add(tmp);
			}
			length = 0;
			tmp = "";
		} else {
			tmp += cross[i][j];
			length++;
		}
	}
	if(tmp.length() >= 2)
		list.add(tmp);
}
  1. ์„ธ๋กœ(์œ„โ†’์•„๋ž˜)๋กœ 2๊ธ€์ž ์ด์ƒ์ธ ๋‹จ์–ด๋ฅผ ์ฐพ์•„ list์— ์ €์žฅ
for(int i=0; i<c; i++) {
	String tmp = "";
	length = 0;
	for(int j=0; j<r; j++) {
		if(cross[j][i].equals("#")) {
			if(length >= 2) {
				list.add(tmp);
			}
			length = 0;
			tmp = "";
		} else {
			tmp += cross[j][i];
			length++;
		}
	}
	if(tmp.length() >= 2)
		list.add(tmp);
}
  1. ๋‹จ์–ด๋ฅผ ๋‹ด์€ list๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋ฐฐ์—ดํ•˜๊ณ  ์ฒซ๋ฒˆ์งธ ๋‹จ์–ด๋ฅผ ์ถœ๋ ฅ
Collections.sort(list);

3. ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class Imple_12 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String[] s = br.readLine().split(" ");
		
		int r = Integer.parseInt(s[0]);
		int c = Integer.parseInt(s[1]);
		
		String [][] cross = new String[r][c];
		ArrayList<String> list = new ArrayList<String>();
		
		for(int i=0; i<r; i++) {
			s = br.readLine().split("");
			for(int j=0; j<c; j++) {
				cross[i][j] = s[j];
			}
		}
		
		int length = 0;
		
		for(int i=0; i<r; i++) {
			String tmp = "";
			length = 0;
			for(int j=0; j<c; j++) {
				if(cross[i][j].equals("#")) {
					if(length >= 2) {
						list.add(tmp);
					}
					length = 0;
					tmp = "";
				} else {
					tmp += cross[i][j];
					length++;
				}
			}
			if(tmp.length() >= 2)
				list.add(tmp);
		}
		
		for(int i=0; i<c; i++) {
			String tmp = "";
			length = 0;
			for(int j=0; j<r; j++) {
				if(cross[j][i].equals("#")) {
					if(length >= 2) {
						list.add(tmp);
					}
					length = 0;
					tmp = "";
				} else {
					tmp += cross[j][i];
					length++;
				}
			}
			if(tmp.length() >= 2)
				list.add(tmp);
		}
		
		Collections.sort(list);
		
		System.out.println(list.get(0));
	}

}

4. ๊ฒฐ๊ณผ

์„ฑ๊ณตโœจ

profile
๐ŸŒฑ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๐ŸŒฑ

0๊ฐœ์˜ ๋Œ“๊ธ€