๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 3054๋ฒˆ: ํ”ผํ„ฐํŒฌ ํ”„๋ ˆ์ž„(๊ตฌํ˜„)

by ์ฃผ๋ฐœ2 2020. 4. 10.
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/3054

 

3054๋ฒˆ: ํ”ผํ„ฐํŒฌ ํ”„๋ ˆ์ž„

๋ฌธ์ œ "ํ”ผํ„ฐํŒฌ ํ”„๋ ˆ์ž„"์€ ๋‹จ์–ด๋ฅผ ๋‹ค์ด์•„๋ชฌ๋“œ ํ˜•ํƒœ๋กœ ์žฅ์‹ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์•ŒํŒŒ๋ฒณ X๋ฅผ ํ”ผํ„ฐํŒฌ ํ”„๋ ˆ์ž„์œผ๋กœ ์žฅ์‹ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ..#.. .#.#. #.X.# .#.#. ..#.. "์›ฌ๋”” ํ”„๋ ˆ์ž„"์€ ํ”ผํ„ฐํŒฌ ํ”„๋ ˆ์ž„๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋‹ค์ด์•„๋ชฌ๋“œ๋ฅผ '*'๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.  ์•ŒํŒŒ๋ฒณ X๋ฅผ ์›ฌ๋”” ํ”„๋ ˆ์ž„์œผ๋กœ ์žฅ์‹ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ..*.. .*.*. *.X.* .*.*. ..*.. ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, 3์˜ ๋ฐฐ์ˆ˜ ์œ„์น˜(์„ธ ๋ฒˆ์งธ, ์—ฌ์„ฏ ๋ฒˆ์งธ, ์•„ํ™‰๋ฒˆ์งธ, ...)์— ์žˆ๋Š” ์•ŒํŒŒ

www.acmicpc.net

์ฝ”๋“œ

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		String str = scan.next();
		String[] sArr = new String[5];
		
		/* ์ฒซ๋ฒˆ์งธ์™€ ๋‹ค์„ฏ๋ฒˆ์งธ ๊ธฐํ˜ธ */
		sArr[0] = "..#..";
		sArr[4] = "..#..";
		for(int i=1; i<str.length(); i++) {
			if(i%3 == 2) {	// 3์˜ ๋ฐฐ์ˆ˜ ์›ฌ๋”” ํ”„๋ ˆ์ž„('*') ๋“ค์–ด๊ฐ€๋Š” ๊ณณ
				sArr[0] += ".*..";
				sArr[4] += ".*..";
			}	
			else {	// ํ”ผํ„ฐํŒฌ ํ”„๋ ˆ์ž„('#') ๋“ค์–ด๊ฐ€๋Š” ๊ณณ
				sArr[0] += ".#..";
				sArr[4] += ".#..";
			}
		}
		
		/* ๋‘๋ฒˆ์งธ์™€ ๋„ค๋ฒˆ์งธ ๊ธฐํ˜ธ */
		sArr[1] = ".#.#.";
		sArr[3] = ".#.#.";
		for(int i=1; i<str.length(); i++) {
			if(i%3 == 2) {	// 3์˜ ๋ฐฐ์ˆ˜ ์›ฌ๋”” ํ”„๋ ˆ์ž„('*') ๋“ค์–ด๊ฐ€๋Š” ๊ณณ
				sArr[1] += "*.*.";
				sArr[3] += "*.*.";
			}
			else {
				sArr[1] += "#.#.";
				sArr[3] += "#.#.";
			}
		}
		
		/* ์„ธ๋ฒˆ์งธ(์ค‘๊ฐ„) ๊ธฐํ˜ธ */
		sArr[2] = "#." + str.charAt(0) + ".#";
		for(int i=1; i<str.length(); i++) {
			if(i%3 == 1) {	// 3์˜ ๋ฐฐ์ˆ˜ ์•ž์— ์˜ค๋Š” ๋ฌธ์ž
				sArr[2] += "." + str.charAt(i);
				
				/*
				 * ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 3, 5์ผ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด
				 * DOG -> ์˜ˆ์ œ์™€ ๊ฐ™์ด O์—์„œ ๋๋‚ ๋•Œ ".*" ๊ฐ€ ๋ถ™์–ด์•ผํ•จ.
				 * DOGDO -> ๋งˆ์ง€๋ง‰์— ๋๋‚ ๋•Œ 3์˜ ๋ฐฐ์ˆ˜์œ„์น˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ".#" ๋กœ ๋๋‚˜์•ผํ•จ.
				 */
				if(i == str.length()-1) 
					sArr[2] += ".#";
				else 
					sArr[2] += ".*";
			}
			else if(i%3 == 2) {	// ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž(3์˜ ๋ฐฐ์ˆ˜ ์œ„์น˜)
				sArr[2] += "." + str.charAt(i) + ".*";
			}
			else {	// ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ๋ฌธ์ž
				sArr[2] += "." + str.charAt(i) + ".#"; 
			}
		}
		
		for(int i=0; i<sArr.length; i++) {
			System.out.println(sArr[i]);
		}
		
		scan.close();
	}

}

ํ’€์ด

๋ฌธ์ œ์—์„œ ์ถœ๋ ฅํ•˜๋Š” ๊ทœ์น™์„ ์ฐพ๊ณ  ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๊ฝค ๊นŒ๋‹ค๋กœ์› ๋‹ค..

์ถœ๋ ฅ์—์„œ ์ฒซ๋ฒˆ์งธ = ๋‹ค์„ฏ๋ฒˆ์งธ , ๋‘๋ฒˆ์งธ = ๋„ค๋ฒˆ์งธ ์ถœ๋ ฅ์€ ๋˜‘๊ฐ™๋‹ค.

 

1) ์ฒซ๋ฒˆ์งธ , ๋‹ค์„ฏ๋ฒˆ์งธ ํ–‰

์•ž์— ๋ฌด์กฐ๊ฑด "..#.." ๋Š” ๋“ค์–ด๊ฐ€๊ณ , ์ดํ›„์— 3์˜ ๋ฐฐ์ˆ˜ ์œ„์น˜๊ฐ€ ์žˆ๋Š๋ƒ ์—†๋Š๋ƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

๋”ฐ๋ผ์„œ "..#.." ๋Š” ์ €์žฅํ•˜๊ณ , i๋ฅผ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

๊ทธ ํ›„ 3์˜ ๋ฐฐ์ˆ˜์œ„์น˜์ธ๊ณณ(i%3 == 2) ์ธ๊ณณ์—๋Š” ".*.." ์„, ๋‚˜๋จธ์ง€๋Š” ".#.." ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค.

 

 

2) ๋‘๋ฒˆ์งธ , ๋„ค๋ฒˆ์งธ ํ–‰

์•ž์— ".#.#." ๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ , ์ดํ›„ ์œ„์™€ ๊ฐ™์ด 3์˜ ๋ฐฐ์ˆ˜ ์œ„์น˜๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€์— ๋”ฐ๋ผ ๊ฐ’์„ ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

3) ์„ธ๋ฒˆ์งธ ํ–‰

๊ฐ€์šด๋ฐ๋Š” ์œ„์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ƒ๊ฐ์„ ์ข€ ํ•ด๋ด์•ผํ•œ๋‹ค.

๋จผ์ € ๊ฐ€์žฅ ์ฒ˜์Œ์€ "#.D.#" ์™€ ๊ฐ™์ด ์ €์žฅํ•œ๋‹ค.(์ฒซ๋ฒˆ์งธ ๋ฌธ์ž)

DOG์™€ ๊ฐ™์ด 3์˜ ๋ฐฐ์ˆ˜ ์œ„์น˜๊ฐ€ ์žˆ๋Š”๊ฒฝ์šฐ, .O.*.G.* ์ฒ˜๋Ÿผ 3์˜ ๋ฐฐ์ˆ˜ ์‹œ์ž‘ํ•˜๋Š” ๋ถ€๋ถ„์ด *๋กœ ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค.

๊ทธ ํ›„ O์™€ ๊ฐ™์ด 3์˜ ๋ฐฐ์ˆ˜ ์•ž์— ์˜ค๋Š” ๋ฌธ์ž์ผ๊ฒฝ์šฐ(i์˜ ๊ฐ’์ด ๋ฌธ์ž์—ด๊ธธ์ด-1 ๊ณผ ๋‹ค๋ฅธ๊ฒฝ์šฐ) --> ".*" ๋กœ ๋๋‚ด์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ DOGDO ์™€ ๊ฐ™์ด ๋ฌธ์ž์—ด ๊ธธ์ด๊ฐ€ 5์ธ๊ฒฝ์šฐ, ๋งˆ์ง€๋ง‰ O๋Š” 3์˜ ๋ฐฐ์ˆ˜ ์•ž์ด ์•„๋‹ˆ๋ฏ€๋กœ ".#" ๋กœ ๋๋‚ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  3์˜ ๋ฐฐ์ˆ˜ ์œ„์น˜์ธ๊ฒฝ์šฐ -> ".G.*" ๋ฅผ ์ €์žฅํ•˜๊ณ ,

๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ์˜ ๋ฌธ์ž๋Š” ".D.#" ๋ฅผ ์ €์žฅํ•œ๋‹ค.

 

 

๊ตฌํ˜„ ๋ฌธ์ œ๋Š” ๋ฌธ์ œ์—์„œ ๋‚˜์˜จ ์กฐ๊ฑด์ด๋‚˜ ํ๋ฆ„๋Œ€๋กœ ๋”ฐ๋ผ์„œ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š”๋ฐ ์ƒ๊ฐํ•  ๋ถ€๋ถ„์ด ์ข€ ๋งŽ์€๊ฒƒ ๊ฐ™์•„์„œ ์–ด๋ ต๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€