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

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[Java] - ์นดํŽซ(์™„์ „ํƒ์ƒ‰, ์ˆ˜ํ•™)

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

https://programmers.co.kr/learn/courses/30/lessons/42842

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์นดํŽซ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

Leo๋Š” ์นดํŽซ์„ ์‚ฌ๋Ÿฌ ๊ฐ”๋‹ค๊ฐ€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ค‘์•™์—๋Š” ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๊ณ  ํ…Œ๋‘๋ฆฌ 1์ค„์€ ๊ฐˆ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๋Š” ๊ฒฉ์ž ๋ชจ์–‘ ์นดํŽซ์„ ๋ดค์Šต๋‹ˆ๋‹ค. Leo๋Š” ์ง‘์œผ๋กœ ๋Œ์•„์™€์„œ ์•„๊นŒ ๋ณธ ์นดํŽซ์˜ ๋นจ๊ฐ„์ƒ‰๊ณผ ๊ฐˆ์ƒ‰์œผ๋กœ ์ƒ‰์น ๋œ ๊ฒฉ์ž์˜ ๊ฐœ์ˆ˜๋Š” ๊ธฐ์–ตํ–ˆ์ง€๋งŒ, ์ „์ฒด ์นดํŽซ์˜ ํฌ๊ธฐ๋Š” ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. Leo๊ฐ€ ๋ณธ ์นดํŽซ์—์„œ ๊ฐˆ์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ brown, ๋นจ๊ฐ„์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ red๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์นดํŽซ์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ํฌ๊ธฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution

programmers.co.kr

์ฝ”๋“œ

class Solution {
    public int[] solution(int brown, int red) {
		int[] answer = new int[2];
		int area = brown + red;
		boolean flag = true;
		for(int i=2; i<=2000; i++) {	 // ์„ธ๋กœ
			for(int j=3; j<=2000; j++) { // ๊ฐ€๋กœ
				if((i-2) * (j-2) == red && (i*j) == area) {
					answer[0] = j;
					answer[1] = i;
					flag = false;
					break;
				}
			}
			if(!flag)   break;
		}
		return answer;
	}
}

ํ’€์ด

 

๋ญ”๊ฐ€ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณธ ๊ฒƒ ๊ฐ™์€๋ฐ ๋ญ”์ง€ ๊ธฐ์–ต์ด ์•ˆ๋‚˜์„œ ์ผ๋‹จ ํ’€์—ˆ๋‹ค.

์ˆ˜ํ•™์  ๊ทœ์น™์„ ์กฐ๊ธˆ๋งŒ ์ด์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐˆ์ƒ‰ = brown , ๋นจ๊ฐ„์ƒ‰ = red ์ด๊ณ , ๊ฐ€๋กœ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ๊ตฌํ•ด์•ผํ•˜๋Š”๋ฐ

๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

๊ฐ€๋กœ * ์„ธ๋กœ = (brown + red) --> i * j = brown + red

๋นจ๊ฐ„์ƒ‰ = (๊ฐ€๋กœ-2) * (์„ธ๋กœ-2) --> red = (i-2) * (j-2)

 

์œ„ ๋‘ ์ˆ˜์‹์„ ๋งŒ์กฑํ•˜๋Š” i, j ๊ฐ’์„ ์ฐพ์œผ๋ฉด ๋œ๋‹ค.

i ๊ฐ€ ๊ณ ์ •์ผ๋•Œ j๊ฐ€ ๋” ์ปค์ง€๋ฏ€๋กœ, ๋ฌธ์ œ์—์„œ ๊ฐ€๋กœ >= ์„ธ๋กœ ์ด๋ฏ€๋กœ, i = ์„ธ๋กœ , j = ๊ฐ€๋กœ๊ฐ€ ๋œ๋‹ค.

 

์œ„ ๋ฌธ์ œ์™€ ๋™์ผํ•œ ๋ฌธ์ œ๋Š” ์•„๋ž˜ ํด๋ฆญ.

๋ฐฑ์ค€ 2858๋ฒˆ ๊ธฐ์ˆ™์‚ฌ๋ฐ”๋‹ฅ

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€