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

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_์ตœ์†Œ์ง์‚ฌ๊ฐํ˜•

by carrot0911 2024. 11. 30.

๋ฌธ์ œ ์„ค๋ช…

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

 

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

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

programmers.co.kr

๋ช…ํ•จ ์ง€๊ฐ‘์„ ๋งŒ๋“œ๋Š” ํšŒ์‚ฌ์—์„œ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋ฅผ ์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ชจ์–‘๊ณผ ํฌ๊ธฐ์˜ ๋ช…ํ•จ๋“ค์„ ๋ชจ๋‘ ์ˆ˜๋‚ฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด์„œ, ์ž‘์•„์„œ ๋“ค๊ณ  ๋‹ค๋‹ˆ๊ธฐ ํŽธํ•œ ์ง€๊ฐ‘์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ง€๊ฐ‘์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋””์ž์ธํŒ€์€ ๋ชจ๋“  ๋ช…ํ•จ์˜ ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.
์•„๋ž˜ ํ‘œ๋Š” 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 × 15)์„ returnํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #3

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

 

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

class Solution {
    public int solution(int[][] sizes) {
        int answer = 0;
        int width = 0;
        int height = 0;
        
        for (int i = 0; i < sizes.length; i++) {
            if (sizes[i][0] < sizes[i][1]) {
                int temp = sizes[i][0];
                sizes[i][0] = sizes[i][1];
                sizes[i][1] = temp;
            }
            
            if (sizes[i][0] > width) {
                width = sizes[i][0];
            }
            if (sizes[i][1] > height) {
                height = sizes[i][1];
            }
        }
        answer = width * height;
        
        return answer;
    }
}

์ฝ”๋“œ ์„ค๋ช…

  • int answer = 0 : ์ตœ์†Œ ์ง€๊ฐ‘ ํฌ๊ธฐ๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜ answer๋ฅผ ์ƒ์„ฑํ•˜๊ณ  0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  • int width = 0, int height = 0 : ์ง€๊ฐ‘์˜ ๊ฐ€๋กœ(width)์™€ ์„ธ๋กœ(height) ํฌ๊ธฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ฐ๊ฐ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  • for (int i = 0; i < sizes.length; i++) { } : ๋ฐฐ์—ด sizes๋ฅผ ์ˆœํšŒํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ, ๋ช…ํ•จ์˜ ๊ฐ ๊ฐ€๋กœ์™€ ์„ธ๋กœ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๊ณ  ์ตœ๋Œ€ ํฌ๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค. i๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ size.length๋ณด๋‹ค ์ž‘์„ ๋•Œ๊นŒ์ง€ ์ฆ๊ฐ€ํ•œ๋‹ค.
    • if (sizes[i][0] < sizes[i][1]) { } : ๊ฐ ๋ช…ํ•จ์˜ ๊ฐ€๋กœ(size[i][0]) ์™€ ์„ธ๋กœ(sizes[i][1])๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ฐ€๋กœ๊ฐ€ ์„ธ๋กœ๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ ๋ช…ํ•จ์„ ํšŒ์ „ํ•œ๋‹ค.
    • if (sizes[i][0] > width) { width = size[i][0] } : ๊ฐ€๋กœ์˜ ๊ธธ์ด(sizes[i][0])๊ฐ€ ํ˜„์žฌ width๋ณด๋‹ค ํฌ๋‹ค๋ฉด, width๋ฅผ ํ•ด๋‹น ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
    • if (sizes[i][1] > height) { height = size[i][1] } : ์„ธ๋กœ์˜ ๊ธธ์ด(sizes[i][1])๊ฐ€ ํ˜„์žฌ height๋ณด๋‹ค ํฌ๋‹ค๋ฉด, height๋ฅผ ํ•ด๋‹น ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
  • answer = width * height : ๋ชจ๋“  ๋ช…ํ•จ์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€๋กœ(width)์™€ ์„ธ๋กœ(height)์˜ ๊ณฑ์œผ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ answer์— ์ €์žฅํ•œ๋‹ค.