πŸ¦₯ μ½”ν…Œ/Programmers

[Programmers C++] 완전탐색 - μ΅œμ†Œμ§μ‚¬κ°ν˜•

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 6. 2. 20:45
728x90
λ°˜μ‘ν˜•
λͺ…함 지갑을 λ§Œλ“œλŠ” νšŒμ‚¬μ—μ„œ μ§€κ°‘μ˜ 크기λ₯Ό μ •ν•˜λ €κ³  ν•©λ‹ˆλ‹€. λ‹€μ–‘ν•œ λͺ¨μ–‘κ³Ό 크기의 λͺ…함듀을 λͺ¨λ‘ μˆ˜λ‚©ν•  수 μžˆμœΌλ©΄μ„œ, μž‘μ•„μ„œ λ“€κ³  λ‹€λ‹ˆκΈ° νŽΈν•œ 지갑을 λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μš”κ±΄μ„ λ§Œμ‘±ν•˜λŠ” 지갑을 λ§Œλ“€κΈ° μœ„ν•΄ λ””μžμΈνŒ€μ€ λͺ¨λ“  λͺ…ν•¨μ˜ κ°€λ‘œ 길이와 μ„Έλ‘œ 길이λ₯Ό μ‘°μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€.

κ°€μž₯ κΈ΄ κ°€λ‘œ 길이와 μ„Έλ‘œ 길이가 각각 80, 70이기 λ•Œλ¬Έμ— 80(κ°€λ‘œ) x 70(μ„Έλ‘œ) 크기의 지갑을 λ§Œλ“€λ©΄ λͺ¨λ“  λͺ…함듀을 μˆ˜λ‚©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 2번 λͺ…함을 κ°€λ‘œλ‘œ λˆ•ν˜€ μˆ˜λ‚©ν•œλ‹€λ©΄ 80(κ°€λ‘œ) x 50(μ„Έλ‘œ) 크기의 μ§€κ°‘μœΌλ‘œ λͺ¨λ“  λͺ…함듀을 μˆ˜λ‚©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œμ˜ μ§€κ°‘ ν¬κΈ°λŠ” 4000(=80 x 50)μž…λ‹ˆλ‹€.

λͺ¨λ“  λͺ…ν•¨μ˜ κ°€λ‘œ 길이와 μ„Έλ‘œ 길이λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 2차원 λ°°μ—΄ sizesκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€. λͺ¨λ“  λͺ…함을 μˆ˜λ‚©ν•  수 μžˆλŠ” κ°€μž₯ μž‘μ€ 지갑을 λ§Œλ“€ λ•Œ, μ§€κ°‘μ˜ 크기λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.
#include <string>
#include <vector>

using namespace std;

// κ°€μž₯ μž‘μ€ μ§€κ°‘μ˜ ν¬κΈ°λŠ” (λͺ…ν•¨μ˜ κΈ΄ λ³€ 쀑 κ°€μž₯ κΈ΄ λ³€) X (λͺ…ν•¨μ˜ 짧은 λ³€ 쀑 κ°€μž₯ κΈ΄ λ³€)

int solution(vector<vector<int>> sizes) {
    int left = 0;
    int right = 0;
    for (int i = 0; i < sizes.size(); ++i) {
        left = max(left, max(sizes[i][0], sizes[i][1]));
        right = max(right, min(sizes[i][0], sizes[i][1]));
    }
    return left * right;
}
728x90
λ°˜μ‘ν˜•