๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 27137_Square Designs

๋ฟŒ์•ผ._. 2026. 4. 21. 17:11
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/27137)

< Square Designs >

 

๋ฌธ์ œ ํ’€์ด 

 

์ž…๋ ฅ๋ฐ›์€ ์ •์ˆ˜์— ๋งž๊ฒŒ ์‚ฌ๊ฐํ˜• ๋””์ž์ธ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

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.StringTokenizer;

public class _27137_ { // Square Designs

	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 m = Integer.parseInt(st.nextToken());
		int n = Integer.parseInt(st.nextToken());

		bw.write("+");
		for (int i = 0; i < m * 2 + 1; i++) {
			bw.write("-");
		}
		bw.write("+");

		bw.write("          ");

		bw.write("+");
		for (int i = 0; i < n * 2 + 1; i++) {
			bw.write("-");
		}
		bw.write("+\n");

		int x = m, y = n;
		boolean flag = false, left = false, right = false;
		while (x > -1 || y > -1) {
			if (flag) {
				left = true;
			}
			if (x == 0 && !flag) {
				if (right) {
					bw.write("\n");
				}
				bw.write("+");
				for (int i = 0; i < m * 2 + 1; i++) {
					bw.write("-");
				}
				bw.write("+");

				flag = true;
				x = -1;
			}
			if (x > 0) {
				if (right) {
					bw.write("\n");
				}
				bw.write("I-");
				for (int j = 0; j < m; j++) {
					bw.write("X-");
				}
				bw.write("I");
				x -= 1;
			}
			if (y > 0) {
				if (left) {
					for (int i = 0; i < m * 2 + 3; i++) {
						bw.write(" ");
					}
				}
				bw.write("          ");
				bw.write("I-");
				for (int j = 0; j < n; j++) {
					bw.write("X-");
				}
				bw.write("I\n");
				y -= 1;
			} else if (y == 0 && !right) {
				if (left) {
					for (int i = 0; i < m * 2 + 3; i++) {
						bw.write(" ");
					}
				}
				bw.write("          ");
				bw.write("+");
				for (int i = 0; i < n * 2 + 1; i++) {
					bw.write("-");
				}
				bw.write("+");
				right = true;
				y = -1;
			}
		}
		bw.flush();
	}
}
๋ณ€์ˆ˜)
m, n : ์ •์ˆ˜
x, y : ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š” ๋ผ์ธ ์ˆ˜ 

 

์ •์ˆ˜ m, n์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๊ฐ ๋งจ ์œ„์ค„์„ ์ถœ๋ ฅํ•œ๋‹ค. 

 

m ์ค„๊ณผ n ์ค„ ๋งŒํผ I-X-X-I ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ x๊ฐ€ -1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ y๊ฐ€ -1๋ณด๋‹ค ํด ๋•Œ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

1) m์˜ ๋งˆ์ง€๋ง‰ ์ค„์„ ์ถœ๋ ฅํ–ˆ๋‹ค๋ฉด left = true

2) m ์ค„์„ ๋‹ค ์ถœ๋ ฅํ–ˆ๊ณ  ์•„์ง ๋งˆ์ง€๋ง‰ ์ค„์„ ์ถœ๋ ฅํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋งˆ์ง€๋ง‰ ์ค„ ์ถœ๋ ฅ ํ›„ flag= true, x=-1 ์ €์žฅ

3) x๊ฐ€ 0๋ณด๋‹ค ํฌ๋‹ค๋ฉด I-X-X-I ํ˜•์‹ ์ถœ๋ ฅ

4) y๊ฐ€ 0๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๊ณต๋ฐฑ 10์นธ๊ณผ I-X-X-I ํ˜•์‹ ์ถœ๋ ฅ. ๋งŒ์•ฝ ์™ผ์ชฝ ๋ฐ•์Šค๋ฅผ ๋‹ค ์ถœ๋ ฅํ•œ ์ƒํƒœ๋ผ๋ฉด ์•ž์— ๊ณต๋ฐฑ ๋” ์ถ”๊ฐ€

5) n ์ค„์„ ๋‹ค ์ถœ๋ ฅํ–ˆ๊ณ  ์•„์ง ๋งˆ์ง€๋ง‰ ์ค„์„ ์ถœ๋ ฅํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋งˆ์ง€๋ง‰ ์ค„ ์ถœ๋ ฅ ํ›„ right= true, y=-1 ์ €์žฅ 



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 6107_Plumbing the Pond  (0) 2026.04.23
[Baekjoon] 6754_Bridge transport  (0) 2026.04.22
[Baekjoon] 13382_Lab  (0) 2026.04.20
[Baekjoon] 9354_It Is Cold  (0) 2026.04.10
[Baekjoon] 26934_The Bus Card  (0) 2026.04.09