๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programmers lv-1

์ตœ์†Œ์ง์‚ฌ๊ฐํ˜• - Java [์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต]

by ๊ทคํ”ผํ‚ค 2022. 12. 9.

 

โค๏ธ Problem

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

    ์•„๋ž˜ ํ‘œ๋Š” 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 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

  • ์ž…์ถœ๋ ฅ ์˜ˆ & ์„ค๋ช…
no sizes result
1 [[60, 50], [30, 70], [60, 30], [80, 40]] 4000
2 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120
3 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133

 


 

๐Ÿ’› Solution

ํ’€์ด 1

class Solution {
    public int solution(int[][] sizes) {
		int[] width = new int[sizes.length];
		int[] vert = new int[sizes.length];
		
		for(int i=0; i<sizes.length; i++) {
			width[i] = Math.max(sizes[i][0], sizes[i][1]);
			vert[i] = Math.min(sizes[i][0], sizes[i][1]);
		}
		
		int maxWidth = width[0];
		int maxVert = vert[0];
		for(int i=1; i<sizes.length; i++) {
			maxWidth = Math.max(maxWidth, width[i]);
			maxVert = Math.max(maxVert, vert[i]);
		}
        return maxWidth*maxVert;
    }
}

 

์ฒ˜๋ฆฌ์†๋„ VERY GOOD


 


 

ํ’€์ด 2

class Solution {
    public int solution(int[][] sizes) {
		int maxWidth = 0;
		int maxVert = 0;
		
		for(int i=0; i<sizes.length; i++) {
			maxWidth = Math.max(maxWidth, Math.max(sizes[i][0], sizes[i][1]));
			maxVert = Math.max(maxVert, Math.min(sizes[i][0], sizes[i][1]));
		}	
        return maxWidth*maxVert;
    }
}

 

์ฒ˜๋ฆฌ์†๋„ VERY GOOD

 


 

๐Ÿ’œ Comment

์ด ๋ฌธ์ œ์˜ ํ•จ์ •์€ ๋ช…ํ•จ์˜ ๊ฐ€๋กœ๊ธธ์ด์™€ ์„ธ๋กœ๊ธธ์ด๋ฅผ ๋ช…์‹œํ•œ ์ ์ด๋‹ค. ๋ฌธ์ œ ์„ค๋ช…์—๋„ ๋‚˜์™€์žˆ๋“ฏ์ด 2๋ฒˆ ๋ช…ํ•จ์„ ๊ฐ€๋กœ๋กœ ๋ˆ•ํ˜€ ์ˆ˜๋‚ฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ€๋กœ์™€ ์„ธ๋กœ๊ฐ€ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฌธ์ œ์—์„œ ์ œ์‹œํ•œ ๊ฐ€๋กœ๊ธธ์ด์™€ ์„ธ๋กœ๊ธธ์ด๋ฅผ ์‹ ๊ฒฝ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค.

ํ’€์ด 1์—์„œ๋Š” ํ•˜๋‚˜ํ•˜๋‚˜ ํ’€์–ด์„œ ์ž‘์„ฑํ•œ ์…ˆ์ด๊ณ , ํ’€์ด 2๋Š” ํ•ด๋‹น ๊ณผ์ •์„ ํ•ฉ์ณ์„œ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋Ÿฐ์ง€ ์ฒ˜๋ฆฌ ์†๋„์— ์œ ์˜๋ฏธํ•œ ์ฐจ์ด๊ฐ€ ์—†์—ˆ๋‹ค. ๋‘˜๋‹ค VERY GOOD ๐Ÿ˜

 

[ํ’€์ด 1]

ํŽธ์˜์ƒ ๊ฐ€๋กœ ๋ฐฐ์—ด(int[] width)์—๋Š” ๊ธด ๊ธธ์ด๋ฅผ, ์„ธ๋กœ ๋ฐฐ์—ด(int[] vert)๋ฅผ ์งง์€ ๊ธธ์ด๋ฅผ ๋„ฃ๋„๋ก ๊ฐ€์ •ํ–ˆ๋‹ค.

for ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ๋ฐฐ์—ด์š”์†Œ sizes[i][0]์™€ sizes[i][0]๋ฅผ Math.max()์™€ Math.min()์œผ๋กœ ๋น„๊ตํ•˜์—ฌ ๊ธด ๊ธธ์ด๋Š” width[i]์—, ์งง์€ ๊ธธ์ด๋Š” vert[i]์— ๋„ฃ์—ˆ๋‹ค.

๊ทธ ๋‹ค์Œ ๊ฐ ๋ฐฐ์—ด width[]์™€ vert[]์— ๋“ค์–ด์žˆ๋Š” ๊ธธ์ด ์ค‘ ๊ฐ€์žฅ ๊ธด ๋ณ€์„ int maxWidth์™€ int maxVert๋ณ€์ˆ˜์— ๊ฐ๊ฐ ๋„ฃ์€ ๋’ค ๋„“์ด๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ด ๋‘ ๋ณ€์ˆ˜๋ฅผ ๊ณฑํ•ด์„œ return ํ•˜์˜€๋‹ค.

 

[ํ’€์ด 2]

ํ’€์ด 1๊ณผ ๋‹ฌ๋ฆฌ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๋ฐ”๋กœ int maxWidth์™€ int maxVert๋ฅผ ์„ ์–ธํ•˜์˜€๋‹ค. ๋ฐฐ์—ด์— ๋„ฃ๊ณ  ๋น„๊ตํ•˜๋Š” ๊ณผ์ •์„ ํ•œ๋ฒˆ์— ํ•ฉ์น˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.

maxWidth = Math.max(maxWidth, Math.max(sizes[i][0], sizes[i][1]));๋Š” sizes[i][0]์™€ sizes[i][1] ์ค‘์— ํฐ ๊ฐ’์„ ์ถ”์ถœํ•œ ๋’ค, maxWidth์™€ ๋น„๊ตํ•˜์—ฌ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด maxWidth์— ๋‹ค์‹œ ๋Œ€์ž…๋˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.

maxVert = Math.max(maxVert, Math.min(sizes[i][0], sizes[i][1])); ์—ญ์‹œ sizes[i][0]์™€ sizes[i][1] ์ค‘์— ์ž‘์€ ๊ฐ’์„ ์ถ”์ถœํ•œ ๋’ค, maxVert์™€ ๋น„๊ตํ•˜์—ฌ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด maxWidth์— ๋‹ค์‹œ ๋Œ€์ž…๋˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋„“์ด๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด maxWidth์™€ maxVert๋ฅผ ๊ณฑํ•ด์„œ returnํ•˜์˜€๋‹ค.

 

 

 

 

9208์œ„๐Ÿ˜Ž

 

 

 

๋Œ“๊ธ€