๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/๐Ÿต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(Java)

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Java] ์นดํŽซ

by carrot0911 2025. 4. 22.

๋ฌธ์ œ ์„ค๋ช…

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

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

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

Leo๋Š” ์ง‘์œผ๋กœ ๋Œ์•„์™€์„œ ์•„๊นŒ ๋ณธ ์นดํŽซ์˜ ๋…ธ๋ž€์ƒ‰๊ณผ ๊ฐˆ์ƒ‰์œผ๋กœ ์ƒ‰์น ๋œ ๊ฒฉ์ž์˜ ๊ฐœ์ˆ˜๋Š” ๊ธฐ์–ตํ–ˆ์ง€๋งŒ, ์ „์ฒด ์นดํŽซ์˜ ํฌ๊ธฐ๋Š” ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

Leo๊ฐ€ ๋ณธ ์นดํŽซ์—์„œ ๊ฐˆ์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ brown, ๋…ธ๋ž€์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ yellow๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์นดํŽซ์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ํฌ๊ธฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • ๊ฐˆ์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ brown์€ 8 ์ด์ƒ 5,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๋…ธ๋ž€์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ yellow๋Š” 1 ์ด์ƒ 2,000,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์นดํŽซ์˜ ๊ฐ€๋กœ ๊ธธ์ด๋Š” ์„ธ๋กœ ๊ธธ์ด์™€ ๊ฐ™๊ฑฐ๋‚˜, ์„ธ๋กœ ๊ธธ์ด๋ณด๋‹ค ๊น๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

brown yellow return
10 2 [4, 3]
8 1 [3, 3]
24 24 [8, 6]

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

class Solution {
    public int[] solution(int brown, int yellow) {
        // ๊ฒฐ๊ณผ: [๊ฐ€๋กœ, ์„ธ๋กœ]
        int[] answer = new int[2];
        // ์ „์ฒด ๊ฒฉ์ž ์ˆ˜ = ์นดํŽซ ๋„“์ด
        int total = brown + yellow;
        // ์„ธ๋กœ ๊ธธ์ด
        int height = 0;
        
        // ๊ฐˆ์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜์˜ ์ ˆ๋ฐ˜๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๊ฐ€๋Šฅํ•œ ๊ฐ€๋กœ ๊ธธ์ด i ์„ ํƒ
        for (int i = brown / 2; i > 0; i--) {
            // i๊ฐ€ ์ „์ฒด ๋„“์ด์˜ ์•ฝ์ˆ˜์ผ ๋•Œ๋งŒ ํ›„๋ณด๊ฐ€ ๋จ
            if (total % i == 0) {
                // ์„ธ๋กœ ๊ณ„์‚ฐ
                height = total / i;
            }
            
            // ์กฐ๊ฑด1: ๊ฐˆ์ƒ‰ ๊ฒฉ์ž ์ˆ˜๊ฐ€ ํ…Œ๋‘๋ฆฌ๋ฅผ ๋ชจ๋‘ ์ฐจ์ง€ํ•ด์•ผ ํ•จ
            // ํ…Œ๋‘๋ฆฌ: 2*i + 2*width - 4
            // ์กฐ๊ฑด2: ์ค‘์•™์˜ ๋…ธ๋ž€์ƒ‰ ๊ฒฉ์ž ์ˆ˜ = (i-2) * (height-2)
            if (2 * i + 2 * width - 4 == brown && (i-2) * (height-2) == yellow) {
                // ๊ฐ€๋กœ ๊ธธ์ด
                answer[0] = i;
                // ์„ธ๋กœ ๊ธธ์ด
                answer[1] = height;
                // ์กฐ๊ฑด ๋งŒ์กฑ์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ
                break;
            }
        }
        
        // answer ๋ฐ˜ํ™˜
        return answer;
    }
}

๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ์ƒ๊ฐํ•œ ๋ฐฉํ–ฅ

๊ฐ€๋กœ์˜ ๊ธธ์ด๊ฐ€ ์„ธ๋กœ์˜ ๊ธธ์ด๋ณด๋‹ค ๊ธธ์–ด์•ผ ํ•œ๋‹ค.
brown์˜ ์ ˆ๋ฐ˜๋ณด๋‹ค ๊ฐ€๋กœ๊ฐ€ ํด ์ˆ˜ ์—†์œผ๋‹ˆ๊นŒ ์ ˆ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ ์„œ i(๊ฐ€๋กœ ๊ธธ์ด)๋ฅผ ์ž‘์•„์ง€๊ฒŒ ํ•˜๋ฉด์„œ ํ•ด๋‹น๋˜๋Š” ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.
total ๊ฐ’(brown + yellow)์ด i๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด width์— ๋ชซ์„ ์ €์žฅํ•˜๊ณ  ๋‚จ์€ ์กฐ๊ฑด์„ ๋น„๊ตํ•œ๋‹ค.