๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

[Programmers] ์นดํŽซ - Java

category Algorithm/Programmers 2023. 7. 9. 18:19

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

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


1. ๋ฌธ์ œ

brown ๋ธ”๋ก ๊ฐœ์ˆ˜, yellow ๋ธ”๋ก ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์นดํŽซ์€ yellow ๋ธ”๋ก๋“ค์„ ํ•œ ๊ฒน์œผ๋กœ ๋‘˜๋Ÿฌ์‹ผ brown ๋ธ”๋ก์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์นดํŽซ์€ ํ•ญ์ƒ ๊ฐ€๋กœ๊ธธ์ด๊ฐ€ ์„ธ๋กœ๊ธธ์ด๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

์นดํŽซ์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ํฌ๊ธฐ๋ฅผ return ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

2. ํ’€์ด

์•ฝ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค. ํ•˜์ง€๋งŒ 4,6,7,9 ํ…Œ์ผ€์—์„œ ๊ณ„์† ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ ์ „๋ถ€ ๋ฐ€๊ณ  ๋‹ค์‹œ ํ’€์—ˆ๋”๋‹ˆ ํ’€๋ ธ๋‹ค.

1. yellow ์„ธ๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ 1๋ถ€ํ„ฐ ์ ์ฐจ ๋Š˜๋ ค๋‚˜๊ฐ€๊ณ ,

 - yellow๋ฅผ ์„ธ๋กœ๋กœ ๋‚˜๋ˆด์„ ๋•Œ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€์ง€ ์•Š์œผ๋ฉด continue,

 - ์„ธ๋กœ๊ฐ€ yellow๋ฅผ ์„ธ๋กœ๋กœ ๋‚˜๋ˆˆ ๊ฐ’(๊ฐ€๋กœ)๋ณด๋‹ค ํฌ๋ฉด break ํ•ด์ค˜์„œ ๋” ์ด์ƒ ๋ณด์ง€ ์•Š์•˜๋‹ค.

2. ์œ„ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๋งŒ์กฑํ•  ๊ฒฝ์šฐ ์ด ๊ฐœ์ˆ˜๊ฐ€ ๋งž๋Š”์ง€ ์ฒดํฌํ•ด์ค˜์•ผ ํ•œ๋‹ค. (์ด๊ฑธ ๋†“์ณ์„œ 4,6,7,9๋ฅผ ํ‹€๋ ธ๋‹ค.)

 - ์œ„ ์กฐ๊ฑด๋“ค์„ ๊ฑฐ์น˜๋ฉด yellow์˜ ์„ธ๋กœ, ๊ฐ€๋กœ์™€ ๋™์‹œ์— brown์˜ ์„ธ๋กœ, ๊ฐ€๋กœ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค. ์—ฌ๊ธฐ์„œ ๋์ด ์•„๋‹ˆ๋ผ

 - brown์˜ ๊ฐ€๋กœ*์„ธ๋กœ๊ฐ€ brown+yellow์™€ ๋งž์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

3. ์ฝ”๋“œ

import java.io.*;
import java.util.*;

class Solution {
    public int[] solution(int brown, int yellow) {
        int ansW = 0;
        int ansH = 0;
        
        //๋…ธ๋ž€์ƒ‰ ์„ธ๋กœ ๊ธฐ์ค€
        for (int yH = 1; yH <= yellow; yH++) {
            if (yellow % yH != 0) continue; //๊ฐ€๋กœ๋Š” ์ž์—ฐ์ˆ˜์—ฌ์•ผ ํ•จ
            if (yH > yellow/yH) break; //๋ฌธ์ œ ์กฐ๊ฑด: ๊ฐ€๋กœ>=์„ธ๋กœ
            int yW = yellow/yH;
            int bH = yH+2;
            int bW = yW+2;
            
            //ํ•„์ˆ˜ ์กฐ๊ฑด) ๋…ธ๋ž€์ƒ‰์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ์ด์šฉ-> ์ด ๊ฐœ์ˆ˜ ๋งŒ์กฑํ•˜๋Š”์ง€ check
            if (bH * bW == brown+yellow) { 
                ansW = bW;
                ansH = bH;
            }
        }
        
        return new int[] {ansW, ansH};
    }
}

 

4. ์‚ฌ๋‹ด

์•ˆ๋ณด์ผ ๋• ๋ฐ€๊ณ  ๋‹ค์‹œ ํ‘ธ๋Š” ๊ฒƒ๋„ ๋ฐฉ๋ฒ•์ธ๋“ฏํ•˜๋‹ค