๐Ÿ Algorithm/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Programmers] ์ตœ์†Œ์ง์‚ฌ๊ฐํ˜•(์ž๋ฐ”)

Dhey 2023. 5. 15. 12:15
๋ฐ˜์‘ํ˜•

โžฐ๋ฌธ์ œ

๋ช…ํ•จ ์ง€๊ฐ‘์„ ๋งŒ๋“œ๋Š” ํšŒ์‚ฌ์—์„œ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋ฅผ ์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ชจ์–‘๊ณผ ํฌ๊ธฐ์˜ ๋ช…ํ•จ๋“ค์„ ๋ชจ๋‘ ์ˆ˜๋‚ฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด์„œ, ์ž‘์•„์„œ ๋“ค๊ณ  ๋‹ค๋‹ˆ๊ธฐ ํŽธํ•œ ์ง€๊ฐ‘์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ง€๊ฐ‘์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋””์ž์ธํŒ€์€ ๋ชจ๋“  ๋ช…ํ•จ์˜ ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜ ํ‘œ๋Š” 4๊ฐ€์ง€ ๋ช…ํ•จ์˜ ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋ช…ํ•จ ๋ฒˆํ˜ธ ๊ฐ€๋กœ ๊ธธ์ด ์„ธ๋กœ ๊ธธ์ด
1 60 50
2 30 70
3 60 30
4 80 40

๊ฐ€์žฅ ๊ธด ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๊ฐ€ ๊ฐ๊ฐ 80, 70์ด๊ธฐ ๋•Œ๋ฌธ์— 80(๊ฐ€๋กœ) x 70(์„ธ๋กœ) ํฌ๊ธฐ์˜ ์ง€๊ฐ‘์„ ๋งŒ๋“ค๋ฉด ๋ชจ๋“  ๋ช…ํ•จ๋“ค์„ ์ˆ˜๋‚ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 2๋ฒˆ ๋ช…ํ•จ์„ ๊ฐ€๋กœ๋กœ ๋ˆ•ํ˜€ ์ˆ˜๋‚ฉํ•œ๋‹ค๋ฉด 80(๊ฐ€๋กœ) x 50(์„ธ๋กœ) ํฌ๊ธฐ์˜ ์ง€๊ฐ‘์œผ๋กœ ๋ชจ๋“  ๋ช…ํ•จ๋“ค์„ ์ˆ˜๋‚ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ์˜ ์ง€๊ฐ‘ ํฌ๊ธฐ๋Š” 4000(=80 x 50)์ž…๋‹ˆ๋‹ค.

 

๋ชจ๋“  ๋ช…ํ•จ์˜ ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 2์ฐจ์› ๋ฐฐ์—ด sizes๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ช…ํ•จ์„ ์ˆ˜๋‚ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ง€๊ฐ‘์„ ๋งŒ๋“ค ๋•Œ, ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

์ œํ•œ์‚ฌํ•ญ

  • sizes์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 10,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    • sizes์˜ ์›์†Œ๋Š” [w, h] ํ˜•์‹์ž…๋‹ˆ๋‹ค.
    • w๋Š” ๋ช…ํ•จ์˜ ๊ฐ€๋กœ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    • h๋Š” ๋ช…ํ•จ์˜ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    • w์™€ h๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

 


์ž…์ถœ๋ ฅ ์˜ˆ

sizes result
[[60, 50], [30, 70], [60, 30], [80, 40]] 4000
[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120
[[14, 4], [19, 6], [6, 16], 18, 7], [7, 11]] 133

 


์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  ์ž…์ถœ๋ ฅ ์˜ˆ #1
     ๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  ์ž…์ถœ๋ ฅ ์˜ˆ #2
     ๋ช…ํ•จ๋“ค์„ ์ ์ ˆํžˆ ํšŒ์ „์‹œ์ผœ ๊ฒน์ณค์„ ๋•Œ, 3๋ฒˆ์งธ ๋ช…ํ•จ(๊ฐ€๋กœ: 8, ์„ธ๋กœ: 15)์ด ๋‹ค๋ฅธ ๋ชจ๋“  ๋ช…ํ•จ๋ณด๋‹ค ํฌ๊ธฐ๊ฐ€ ํฝ๋‹ˆ๋‹ค.       ๋”ฐ๋ผ์„œ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋Š” 3๋ฒˆ์งธ ๋ช…ํ•จ์˜ ํฌ๊ธฐ์™€ ๊ฐ™์œผ๋ฉฐ, 120(=8 x 15)์„ return ํ•ฉ๋‹ˆ๋‹ค.

  ์ž…์ถœ๋ ฅ ์˜ˆ #3
     ๋ช…ํ•จ๋“ค์„ ์ ์ ˆํžˆ ํšŒ์ „์‹œ์ผœ ๊ฒน์ณค์„ ๋•Œ, ๋ชจ๋“  ๋ช…ํ•จ์„ ํฌํ•จํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋Š” 133(=19 x 7)์ž…๋‹ˆ๋‹ค.

 

 

 


๐Ÿ’กํ’€์ด

๐Ÿ‘€ ์ ‘๊ทผ

* POINT!  ๋ช…ํ•จ์„ ํšŒ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค! 

 

  1. ๊ฐ€๋กœ์™€ ์„ธ๋กœ์— ๋Œ€ํ•ด ๊ณ ์ •๋œ ํ‹€๋งŒ ์ง‘์ค‘ํ•˜๋ฉด ๋จธ๋ฆฌ๊ฐ€ ๋” ์•„ํŒŒ์งˆ ์ˆ˜ ์žˆ๋‹ค.

  2. ๊ฐ€๋กœ์™€ ์„ธ๋กœ๋กœ ๊ตฌ๋ถ„์ง“์ง€ ์•Š๊ณ  ๋‘ ๊ธธ์ด ์ค‘ ๊ธด ๋ถ€๋ถ„๊ณผ ์งง์€ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

      (๊ฐ€๋กœ: ๊ธด ๋ถ€๋ถ„, ์„ธ๋กœ: ์งง์€ ๋ถ€๋ถ„)

  3. ๊ฐ€๋กœ, ์„ธ๋กœ์—์„œ ๊ฐ๊ฐ Max๊ฐ’์„ ์‚ฐ์ถœํ•œ๋‹ค.

 

 

 

๊ฐ ๋ช…ํ•จ์˜ ๊ธธ์ด ์ค‘ ๊ธด ๋ถ€๋ถ„๊ณผ ์งง์€ ๋ถ€๋ถ„์„ ๊ตฌํ•œ๋‹ค.

for(int i = 0; i < sizes.length; i++){
      int w = Math.max(sizes[i][0], sizes[i][1]); // ๊ธด ๋ถ€๋ถ„
      int h = Math.min(sizes[i][0], sizes[i][1]); // ์งง์€ ๋ถ€๋ถ„
}

 

๊ฐ€๋กœ, ์„ธ๋กœ์˜ ๊ธฐ์กด max๊ฐ’(max_w, max_h)๊ณผ ํ˜„์žฌ์˜ max๊ฐ’(w, h)์—์„œ์˜ Max๊ฐ’์„ ๋‹ค์‹œ ์„ค์ •ํ•œ๋‹ค.

max_w = Math.max(max_w, w);
max_h = Math.max(max_h, h);

 

 

 

 

โญ์ œ์ถœ ์ฝ”๋“œ

class Solution {
    public int solution(int[][] sizes) {
        int max_w  = 0;
        int max_h = 0;
        
        for(int i=0; i<sizes.length; i++){
            int w = Math.max(sizes[i][0], sizes[i][1]);     //๊ธด ๋ถ€๋ถ„
            int h = Math.min(sizes[i][0], sizes[i][1]);     //์งง์€ ๋ถ€๋ถ„
            
            max_w = Math.max(max_w, w);
            max_h = Math.max(max_h, h);
        }
        return max_w*max_h;
    }
}

 

 

๋ฐ˜์‘ํ˜•