본문 바로가기
코딩테스트/LV. 1

LV. 1 :: 최소직사각형

by KUROMI98 2023. 1. 18.

https://school.programmers.co.kr/learn/courses/30/lessons/86491?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

솔루션

function solution(sizes) {
    // 입력으로 들어오는 sizes는 [60, 50], [30, 70], [60, 30], [80, 40] 이러합니다.
    // 따라서 size의 원소[0]이 가로 길이로, 원소[1]이 세로 길이로 주어진다는 겁니다.

    let longmax = 0; // '긴 변의 최대값'을 선언해줍니다.
    let shortmax = 0; // '짧은 변의 최대값'을 선언해줍니다.

    for (let length of sizes)
    {
        //'of' 를 사용해서, sizes의 원소를 length라고 이름 붙였습니다.
        // 0번째 원소, 즉 length[0]이 가로길이,
        // 1번째 원소, 즉 length[1]이 세로길이인 겁니다.

        if (length[0] > length[1])
            // 가로가 세로보다 더 긴 변일 때의 경우입니다.
        {
            if (longmax < length[0]) {longmax = length[0]};
            // 입력으로 들어온 가로값이 '긴 변의 최대값'으로 설정해 놓은 것보다 크면,
            // 그 가로값을 새로운 '긴 변의 최대값'으로 설정한다.

            if (shortmax < length[1]) {shortmax = length[1]};
            // 입력으로 들어온 세로값이 '짧은 변의 최대값'으로 설정해 놓은 것보다 크면,
            // 그 세로값을 새로운 '짧은 변의 최대값'으로 설정한다.
        }

        else // 세로가 가로보다 더 긴 변일 때의 경우입니다.
        {
            if (longmax < length[1]) {longmax = length[1]};
            // 입력으로 들어온 세로값이 '긴 변의 최대값'으로 설정해 놓은 것보다 크면,
            // 그 세로값을 새로운 '긴 변의 최대값' 으로 설정한다.

            if (shortmax < length[0]) {shortmax = length[0]};
            // 입력으로 들어온 가로값이 '짧은 변의 최대값'으로 설정해 놓은 것보다 크면,
            // 그 가로값을 새로운 '짧은 변의 최대값'으로 설정한다.
        }

    };

    return longmax * shortmax;
    // 명함 지갑의 크기 = 긴 변들 중 최대값 * 짧은 변들 중 최대값
}

.

.

+)230617

const solution = (sizes) => { 
    for(i=0; i<sizes.length; i++) {
        if (sizes[i][0]>sizes[i][1]) { sizes[i].reverse();}
    }
    
    let minsize = 0;
    let maxsize = 0;
    
    for(i=0; i<sizes.length; i++) {
         if (sizes[i][0]>minsize) {minsize=sizes[i][0];}
    }
    
    for(i=0; i<sizes.length; i++) {
         if (sizes[i][1]>maxsize) {maxsize=sizes[i][1];}
    }
    
    return maxsize*minsize;
}

230916 C++

#include <string>
#include <vector>
#include <algorithm> 
using namespace std;

int solution(vector<vector<int>> sizes) {
    for(int i=0; i<sizes.size(); i++){
        sort(sizes[i].begin(), sizes[i].end());
    } 
    int amax = 0;
    int bmax = 0;
    for(int i=0; i<sizes.size(); i++) {
        if (sizes[i][0]>bmax) bmax = sizes[i][0];
        if (sizes[i][1]>amax) amax = sizes[i][1];
    }
    return amax*bmax;
}

'코딩테스트 > LV. 1' 카테고리의 다른 글

LV. 1 :: 문자열 내 p와 y의 개수  (0) 2023.01.23
LV. 1 :: 자연수 뒤집어 배열로 만들기  (0) 2023.01.23
LV. 1 :: 자릿수 더하기  (0) 2023.01.23
LV. 1 :: 평균 구하기  (0) 2023.01.23
LV. 1 :: 짝수와 홀수  (0) 2023.01.23

댓글