프로그래머스 Lv0 - 최댓값 만들기 (2), 직사각형 넓이 구하기

찐새·2023년 4월 18일
0

코딩테스트

목록 보기
30/53
post-thumbnail

최댓값 만들기 (2)

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

코드

function solution(numbers) {
    let answer = -1e9;
    
    numbers.forEach((n, i)=>{
        numbers.forEach((m, j)=>{
            if (i !== j && n * m > answer){
                answer = n * m;
            }
        })
    })
    return answer;
}

풀이

클래식하게 풀었다. 처음에는 for...of로 이중 루프를 돌렸다. 값이 다른 것만 계산했더니 같은 숫자가 두 개 이상 나오는 경우를 생각지 못했다.

같은 숫자가 나오더라도 계산되도록 인덱스가 다른 경우를 조건에 추가했다.

참고

다른 사람 풀이를 보니 매우 심플했다. 오름차순으로 정렬 후 가장 작은 수 두 개와 가장 큰 수 두 개의 곱을 비교해 큰 값을 리턴하면 되었다.

function solution(numbers) {
    const length = numbers.length;
    numbers.sort((a,b)=>a-b);
    return Math.max(numbers[0]*numbers[1], numbers[length-1]*numbers[length-2]);
}

직사각형 넓이 구하기

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

코드

function solution(dots) {
    const [dot1, dot2, dot3, dot4] = dots;
    const xArr = [dot1[0], dot2[0], dot3[0], dot4[0]].sort((a,b)=>a-b);
    const yArr = [dot1[1], dot2[1], dot3[1], dot4[1]].sort((a,b)=>a-b);
    
    const answer = (xArr[3] - xArr[0]) * (yArr[3] - yArr[0]);
    return answer;
}

풀이

x축, y축 최댓값과 최솟값 간의 거리를 구한 후 곱해서 넓이를 구했다. Math 메서드를 써도 큰 차이가 없는 거 같아서 쓰지 않았다.

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글