일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- reduce
- 썸네일 생성
- 프로그래머스
- 자바스크립트
- AWS EBS
- fluent-ffmpeg
- 레벨2
- 맥에서 MSSQL
- map
- iscomposing
- fill
- 레벨1
- mssql
- MIN
- DB 백업 파일 복원
- 리액트
- 객체에서 value만 가져오기
- 삼항연산자
- indexof
- +연산자
- array
- 배열 중복 개수 구하기
- max
- 이벤트 중복 발생 현상
- AWS
- sort
- substr
- Azure Data Studio
- Filter
- math
- Today
- Total
3은로그
[프로그래머스] Lv.1 최소직사각형 본문
https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
코드
function solution(sizes) {
var answer = 0;
var maxIdx0 = 0;
var maxIdx1 = 0;
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]];
}
}
maxIdx1 = Math.max(...sizes.map(v => v[0]));
maxIdx2 = Math.max(...sizes.map(v => v[1]));
return maxIdx1 * maxIdx2;
}
1. 명함을 가로와 세로로 두 방향으로 넣을 수 있기 때문에 계산을 쉽게하기 위해 가로에는 큰 변의 길이를 세로에는 작은 변의 길이를 저장한다.
2. 명함의 가로 길이 중 가장 긴 것과 세로 길이 중 가장 긴 것을 찾아 곱한다.
이중 배열에서 최대값 찾기_spread 연산자 사용
Math.max(...sizes.map( v => v[0]));
- Math.max()
Math.max() 함수는 파라미터로 입력받은 숫자들 중 최대값을 구해서 리턴하는 함수이다.
이 함수들을 사용해서 배열의 최대값을 구하려면, 배열의 원소들을 하나씩 꺼내서,
Math.max() 함수의 파라미터로 전달하면 된다.
Spread Operator(전개 연산자)를 사용하여 파라미터로 전달할 수 있다.
Spread Operator는 "..." 점 세개로 표현한다. 배열의 원소들이 펼쳐지는 효과가 있다.
- Map
map() 함수는 배열을 순회하며 지정된 콜백 함수를 적용하여 각 요소를 변환하고, 그 변환된 값을 모아서 새로운 배열로 반환하는 역할을 수행한다.
따라서 위 코드는 이차원 배열에서 0번째 인덱스의 배열 값만 모아서 반환한다.
Math.max(...sizes.map( v => v[1]));은 이차원 배열에서 1번째 인덱스의 배열 값만 모아서 반환한다.
이 방법으로 이중배열에서 최대값을 찾을 수 있다.
다른 방법
function solution(sizes) {
const rotated = sizes.map(([w, h]) => w < h ? [h, w] : [w, h]);
let maxSize = [0, 0];
rotated.forEach(([w, h]) => {
if (w > maxSize[0]) maxSize[0] = w;
if (h > maxSize[1]) maxSize[1] = h;
})
return maxSize[0]*maxSize[1];
}
다른 사람의 풀이인데 내 방법보다 더 가독성이 좋고 깔끔하다.
- map과 구조분해할당을 사용해서 세로의 길이가 더 길면 세로와 가로의 자리를 바꾼다.
- forEach를 사용해서 배열을 순회하며 가장 길이가 긴 세로와 가로를 찾아 저장한다.
- 두 숫자를 곱한다.
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 코딩 기초 트레이닝 - 원하는 문자열 찾기 (0) | 2024.03.14 |
---|---|
[프로그래머스] 코딩 기초 트레이닝_ 카운트 업 (0) | 2024.01.08 |
[프로그래머스] Lv.2 최솟값 만들기 (2) | 2023.12.05 |
[프로그래머스] Lv2. JadenCase 문자열 만들기 (1) | 2023.11.26 |
[프로그래머스] Lv2. 최댓값과 최솟값 (1) | 2023.11.24 |