Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 모던 자바스크립트 TIL
- 모던 자바스크립트 Deep Dive TIL
- 백준 node.js
- frontend roadmap study
- 프로그래머스 K_Digital Training 프론트엔드
- KDT 프로그래머스
- react 프로젝트 리팩토링
- KDT 프로그래머스 데브코스 프론트엔드
- 모던 자바스크립트 Deep Dive
- 리팩토링 회고
- Vue3 Router
- 투포인터알고리즘 js
- K_Digital Training
- useEffect return
- Frontend Roadmap
- 개발자 특강
- 모던 javascript Deep Dive
- useRef 지역 변수
- 우테캠 회고록
- 모던 자바스크립트 딥다이브
- 머쓱이
- 프로그래머스 데브코스 프론트엔드 TIL
- 프로그래머스 데브코스
- 프로그래머스 K_Digital Training
- 백준 js
- Vue3
- react customHook 예시
- 프로그래머스 데브코스 프론트엔드
- 인프런 자바스크립트 알고리즘 문제풀이
- TypeScript 문법 소개
Archives
- Today
- Total
프론트엔드 개발자의 기록 공간
[프로그래머스 JavaScript] 최소직사각형 본문
🚩 최소직사각형 JS
📖 문제 설명 : 가로, 세로 길이가 적힌 명함들의 정보가 주어질 때, 최소한의 크기로 명함 지갑을 만들려고 할 때, 필요한 가로, 세로 크기를 구해라. 단 명함은 가로로 눕혀 가로 세로를 바꿀 수 있다.
💡 명함을 가로 세로 전환이 가능하므로(눕힐 수 있다) 명함 당 가로를 큰 쪽, 세로를 작을 쪽으로 돌린다.
function solution(sizes) {
let answer = 1
// 가로의 길이를 제일 긴 변으로 설정 후 회전
for (let i = 0; i < sizes.length; i++) {
if (sizes[i][0] < sizes[i][1]) {
;[sizes[i][0], sizes[i][1]] = [sizes[i][1], sizes[i][0]]
}
}
// 가로의 최대값 * 세로의 최대값 = 최소 지갑
let x = sizes.sort((a, b) => b[0] - a[0])[0][0]
let y = sizes.sort((a, b) => b[1] - a[1])[0][1]
answer = x * y
return answer
}
👨💻 코드 설명
1. 명함들을 순회하면서 가로를 큰 쪽으로 돌린다. 즉, 명함이 세로가 더 길고 가로가 더 짧으면 눕혀서 가로 세로를 반대로 바꾸어 가로를 큰 쪽으로, 세로를 작은 쪽으로 돌린다.
2. 1번을 수행하고 나면, 모든 명함이 큰 쪽이 가로, 작은 쪽이 세로가 되어있다.
그러면 최소한의 지갑을 만들기 위해서는 가로에서 제일 큰 값, 세로에서 제일 큰 값의 지갑을 만들어야 한다.
3. 정렬을 통해 원하는 부분을 추출하고 return 한다.
잘못된 설명, 코드, 예외 케이스가 있다면 댓글 남겨주시면 수정하겠습니다.
728x90
'알고리즘_JS > 프로그래머스_Level1' 카테고리의 다른 글
[프로그래머스 JavaScript] 신고 결과 받기 (0) | 2022.04.08 |
---|---|
[프로그래머스 JavaScript] 직사각형 별찍기 (0) | 2021.07.16 |
[프로그래머스 JavaScript] x만큼 간격이 있는 n개의 숫자 (0) | 2021.07.15 |
[프로그래머스 JavaScript] 행렬의 덧셈 (0) | 2021.07.15 |
[프로그래머스 JavaScript] 핸드폰 번호 가리기 (0) | 2021.07.15 |
Comments