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

[๋ฐฑ์ค€] 2445๋ฒˆ: ๋ณ„ ์ฐ๊ธฐ - 8

by ์ฃผ๋ฐœ2 2020. 1. 16.
๋ฐ˜์‘ํ˜•

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

 

2445๋ฒˆ: ๋ณ„ ์ฐ๊ธฐ - 8

์ฒซ์งธ ์ค„๋ถ€ํ„ฐ 2×N-1๋ฒˆ์งธ ์ค„๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ๋ณ„์„ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

์ฝ”๋“œ

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		int col = 0;
		int space = 2;

		// ์œ—์ค„(N๊ฐœ)
		for(int i=1; i<=N; i++) {
			for(int j=0; j<i; j++)
				System.out.print("*");
			
			for(int j=(i-1)*2; j<(N*2)-2; j++)
				System.out.print(" ");

			for(int j=0; j<i; j++)
				System.out.print("*");
			
			System.out.println();
		}

		// ์•„๋žซ์ค„(N-1๊ฐœ)
		for(int i=N; i<(N*2)-1; i++) {
			for(int j=col; j<N-1; j++)
				System.out.print("*");
			
			for(int j=0; j<space; j++)
				System.out.print(" ");
			
			for(int j=col; j<N-1; j++)
				System.out.print("*");
			
			System.out.println();
			col ++;
			space += 2;
		}

		scan.close();
	}

}

 

ํ’€์ด

N์„ ์ž…๋ ฅ๋ฐ›๊ณ , N*2 - 1ํ–‰ ๊นŒ์ง€ ๊ทœ์น™์„ ์ฐพ์•„ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ๋‹ค.

N์ด 5๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ’€์—ˆ๋‹ค.

ํ–‰๋ณ„๋กœ *์˜ ๊ฐฏ์ˆ˜์™€ ๊ณต๋ฐฑ๊ฐฏ์ˆ˜์˜ ๊ทœ์น™์„ ์ฐพ์•„๋ณด๋ฉด

 

*   ๊ณต๋ฐฑ   *

1     8    1

2     6    2

3     4    3

4     2    4

5     0    5 ===========================

4     2    4

3     4    3

2     6    2

1     8    1

 

์œ„์™€ ๊ฐ™์€ ๊ทœ์น™์ด ์žˆ๋‹ค.

====์นœ ์ค‘๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ์œ—ํ–‰, ์•„๋žซํ–‰์„ ๋”ฐ๋กœ ๊ณ„์‚ฐํ•ด์ค€๋‹ค.

 

์œ„์ชฝ ํ–‰ ์—์„œ๋Š”(i=1, 2, 3, 4, 5 ์ผ๋•Œ)

*์˜ ๊ฐฏ์ˆ˜๋Š” 1, 2, 3, 4, 5 ํ•œ ๊ฐœ์”ฉ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์žฅ์„ ํ†ตํ•ด ์ถœ๋ ฅํ•œ๋‹ค.

for(int j=0; j<i; j++)
	System.out.print("*");

 

๊ณต๋ฐฑ์˜ ๊ฐฏ์ˆ˜๋Š” 8, 6, 4, 2, 0 ๋‘ ๊ฐœ์”ฉ ๊ฐ์†Œํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์žฅ์„ ํ†ตํ•ด ์ถœ๋ ฅํ•œ๋‹ค.

for(int j=(i-1)*2; j<(N*2)-2; j++)
	System.out.print(" ");

 

i๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ, ์ฒซํ–‰์ด 8์ด ๋‚˜์˜ค๋ ค๋ฉด j๊ฐ’์ด 8๊นŒ์ง€ ๋ฐ˜๋ณต๋ผ์•ผํ•œ๋‹ค.

 

i=1 ===> (i-1)*2 = 0 , (N*2)-2 = 8 ==> ๊ณต๋ฐฑ์ด 8๊ฐœ ์ถœ๋ ฅ

i=2 ===> (i-1)*2 = 2 , (N*2)-2 = 8 ==> ๊ณต๋ฐฑ์ด 6๊ฐœ ์ถœ๋ ฅ

...

๊ณ„์†ํ•ด์„œ ์œ„์™€๊ฐ™์ด ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

 

์•„๋ž˜์ชฝ ํ–‰ ์—์„œ๋Š”(i=6, 7, 8, 9 ์ผ๋•Œ)

*์˜ ๊ฐฏ์ˆ˜๋Š” 4, 3, 2, 1 ํ•œ ๊ฐœ์”ฉ ๊ฐ์†Œํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์žฅ์„ ํ†ตํ•ด ์ถœ๋ ฅํ•œ๋‹ค.

for(int j=col; j<N-1; j++)
	System.out.print("*");

i๊ฐ’์ด 6๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ, *์„ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•  col ๋ณ€์ˆ˜์™€ ๊ณต๋ฐฑ์„ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•  space๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋กœ ์„ ์–ธํ–ˆ๋‹ค.

 

 

๊ณต๋ฐฑ์˜ ๊ฐฏ์ˆ˜๋Š” 2, 4, 6, 8 ๋‘ ๊ฐœ์”ฉ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์žฅ์„ ํ†ตํ•ด ์ถœ๋ ฅํ•œ๋‹ค.

for(int j=0; j<space; j++)
	System.out.print(" ");

 

์•ˆ์ชฝ for๋ฌธ์ด ๋๋‚ ๋•Œ๋งˆ๋‹ค col์˜ ๊ฐ’์€ 1์”ฉ, space์˜ ๊ฐ’์€ 2์”ฉ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค.

col ++;
space += 2;
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€