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

[๋ฐฑ์ค€] 2903๋ฒˆ: ์ค‘์•™ ์ด๋™ ์•Œ๊ณ ๋ฆฌ์ฆ˜

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

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

 

2903๋ฒˆ: ์ค‘์•™ ์ด๋™ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ฌธ์ œ ์ƒ๊ทผ์ด๋Š” ์นœ๊ตฌ๋“ค๊ณผ ํ•จ๊ป˜ SF์˜ํ™”๋ฅผ ์ฐ์œผ๋ ค๊ณ  ํ•œ๋‹ค. ์ด ์˜ํ™”๋Š” ์™ธ๊ณ„ ์ง€ํ˜•์ด ํ•„์š”ํ•˜๋‹ค. ์‹ค์ œ๋กœ ์šฐ์ฃผ์„ ์„ ํƒ€๊ณ  ์™ธ๊ณ„ ํ–‰์„ฑ์— ๊ฐ€์„œ ์ดฌ์˜์„ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์ปดํ“จํ„ฐ ๊ทธ๋ž˜ํ”ฝ์œผ๋กœ CG์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์™ธ๊ณ„ ์ง€ํ˜•์€ ์ค‘์•™ ์ด๋™ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹œ์ž‘ํ•˜๋ฉด์„œ ์ƒ๊ทผ์ด๋Š” ์ •์‚ฌ๊ฐํ˜•์„ ์ด๋ฃจ๋Š” ์  4๊ฐœ๋ฅผ ๊ณ ๋ฅธ๋‹ค. ๊ทธ ํ›„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ ์ง€ํ˜•์„ ๋งŒ๋“ ๋‹ค. ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐ ๋ณ€์˜ ์ค‘์•™์— ์ ์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ •์‚ฌ๊ฐํ˜•์˜ ์ค‘์‹ฌ์— ์ ์„ ํ•˜๋‚˜

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 width = 3;
		int[] star = new int[16];
		for(int i=1; i<star.length; i++) {	// 1 ~ 15
			star[i] = width * width;
			width = width + (width-1);
		}
		
		System.out.println(star[N]);
		scan.close();
	}
}

 

ํ’€์ด

๊ทœ์น™๋งŒ ์ฐพ์œผ๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ €์žฅํ•ด์•ผํ•˜๋Š” ์ ์˜ ๊ฐœ์ˆ˜๋Š” ์ œ๊ณฑ์ˆ˜์ด๋‹ค.

9 -> 25 -> 81 -> 289 -> ...

๋”ฐ๋ผ์„œ ๋ช‡์˜ ์ œ๊ณฑ์ธ์ง€๋งŒ ์ฐพ์•„์ฃผ๋ฉด ๋œ๋‹ค.

 

๊ฐ€๋กœ์˜ ์ ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ณด๋ฉด(N = 1๋ถ€ํ„ฐ)

3, 5, 9, 17, 33, ...๊ฐ€ ๋œ๋‹ค

3 = 2 + (2-1)

5 = 3 + (3-1)

9 = 5 + (5-1)

17 = 9 + (9-1)

33 = 17 + (17-1)

...

 

์œ„์™€ ๊ฐ™์ด ์ด์ „ ์ˆซ์ž + (์ด์ „ ์ˆซ์ž-1) ์˜ ๊ทœ์น™์ด ์žˆ๋‹ค.

N์˜ ํฌ๊ธฐ๊ฐ€ 15๋ฐ–์— ์•ˆ๋˜๋ฏ€๋กœ ๋ฐฐ์—ด์— ๋ชจ๋“ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ , ์ž…๋ ฅ๋ฐ›๋Š” ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ์ถœ๋ ฅํ–ˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€