-
[JS] 최소직사각형이노베이션 캠프/3주차_알고리즘 2023. 6. 17. 21:52
문제
https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
해당 문제의 경우 첫 작성 코드를 바로 최종 제출함.
최종 제출
function solution(sizes) { let longs = []; let shorts = []; for (let i=0; i<sizes.length; i++) { let w = sizes[i][0]; // 가로 let h = sizes[i][1]; // 세로 if (w > h) { // 가로의 값이 더 클 때 longs.push(w); shorts.push(h); } else { // 세로의 값이 더 클 때 longs.push(h); shorts.push(w); } } let longMax = Math.max(...longs); let shortMax = Math.max(...shorts); return longMax * shortMax; }
- 긴 길이와 짤은 길이를 저장한 변수 선언 (longs, shorts)
- for문 사용하여 sizes 배열 내 원송 접근하여 조건에 맞는 변수에 값을 넣어줌
- Math.max를 사용하여 각 변수 (longs, shorts)에서 가장 큰 값을 찾아와서 곱해준 값을 return
다른 풀이
같이 문제를 푼 조원의 코드의 가독성이 더 좋아서 기록으로 남김 (성능 차이 X)
function solution(sizes) { // 큰길이가 뒤 작은게 앞으로 가는 배열로 변화 // 이때 각 열의 최대값의 곱이 최대 넓이 var answer = 0; // 정렬 sizes.forEach((item)=>{ item.sort((a,b)=>a-b); }) //각열의 최대값 let width = Math.max(...sizes.map((a)=>a[0])); let heigh = Math.max(...sizes.map((a)=>a[1])); }
728x90'이노베이션 캠프 > 3주차_알고리즘' 카테고리의 다른 글
[JS] 모의고사 (0) 2023.06.19 [JS] 로또의 최고 순위와 최저 순위 (0) 2023.06.17 [JS] 두 개 뽑아서 더하기 (0) 2023.06.17 [JS] 같은 숫자는 싫어 (0) 2023.06.17 [JS] 3진법 뒤집기 (1) 2023.06.17