๐Ÿ“ Coding Test Study/Algorithm Problem

[C++][Programmers][์™„์ „ํƒ์ƒ‰] ์ตœ์†Œ์ง์‚ฌ๊ฐํ˜•

ibelieveinme 2023. 4. 21. 00:51
728x90

[๋ฌธ์ œ]

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

 

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

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

programmers.co.kr

 

[ํ•ด๊ฒฐ๋ฒ•]

์œ„์˜ ์˜ˆ์‹œ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋Š” 80*70=5600 ๊ฐ™์ง€๋งŒ 2๋ฒˆ ๋ช…ํ•จ์„ ๋ˆ•ํžˆ๋ฉด ๊ฐ€๋กœ70, ์„ธ๋กœ30์ธ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋˜๋ฏ€๋กœ ๊ฐ€์žฅ ์ž‘์€ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋Š” 80 * 50์ด๋‹ค.

 

์ฆ‰, ํ•œ์ชฝ์„ ํฐ ๊ฐ’์„ ๋‘๊ณ  ๋‹ค๋ฅธ ํ•œ์ชฝ์„ ์ž‘์€ ๊ฐ’์œผ๋กœ ์…‹ํŒ…ํ•œ ํ›„, ๊ฐ€๋กœ ์ค‘์— ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ ์„ธ๋กœ ์ค‘์— ๊ฐ€์žฅ ํฐ๊ฐ’์„ ๋ฝ‘์•„์•ผ ํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

1) 2์ฐจ์› ๋ฒกํ„ฐ์˜ frist๊ฐ’(๊ฐ€๋กœ) > second(์„ธ๋กœ)๊ฐ’์ธ ์ƒํƒœ์—์„œ ๋น„๊ตํ•˜๋„๋ก ํ•˜๊ธฐ. 
2) 2์ฐจ์› ๋ฒกํ„ฐ์˜ first๊ฐ’(๊ฐ€๋กœ) ์ค‘์— ๊ฐ€์žฅ ํฐ ๊ฐ’, second(์„ธ๋กœ)๊ฐ’ ์ค‘์— ๊ฐ€์žฅ ํฐ๊ฐ’ ๋ฝ‘๊ธฐ
3) ๋‘๊ฐœ ๊ณฑํ•ด์„œ return.

 

[์•Œ์•„๋‘˜ ๊ฒƒ]

algorithm ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ min, max ํ•จ์ˆ˜

min(1,2); // 1
max(1,2); // 2

 

[์ฝ”๋“œ]

#include <string>
#include <vector>

using namespace std;

int solution(vector<vector<int>> sizes) {
    int widthMax = 0, heightMax = 0;
    
    for(int i = 0; i<sizes.size(); i++){
        if(sizes[i][0] < sizes[i][1]){
            if(widthMax < sizes[i][1]){
                widthMax = sizes[i][1];
            }
            if(heightMax < sizes[i][0]){
                heightMax = sizes[i][0];
            }
        }else{
            if(widthMax < sizes[i][0]){
                widthMax = sizes[i][0];
            }
            if(heightMax < sizes[i][1]){
                heightMax = sizes[i][1];
            }
        }
    }
    
    return widthMax * heightMax;
}

์œ„์— ์ฝ”๋“œ๋ฅผ min, max ํ•จ์ˆ˜ ์ด์šฉํ•ด์„œ ์ •๋ฆฌ

#include <string>
#include <vector>

using namespace std;

int solution(vector<vector<int>> sizes) {
    int widthMax = 0, heightMax = 0;
    
    for(int i = 0; i<sizes.size(); i++){
        widthMax = max(widthMax, max(sizes[i][0], sizes[i][1]));
        heightMax = max(heightMax, min(sizes[i][0], sizes[i][1]));
    }
    
    return widthMax * heightMax;
}

์ ์ ˆํ•œ STL ์‚ฌ์šฉ์˜ ์ค‘์š”์„ฑ...

728x90