728x90
반응형
(1) 내 풀이 (제출)
function solution(sizes) {
let w = [];
let h = [];
sizes.map(([s1, s2]) => {
if (s1 > s2) {
w.push(s1);
h.push(s2);
} else {
w.push(s2);
h.push(s1);
}
});
return Math.max(...w) * Math.max(...h);
}
1. 배열 w와 h비교해서 큰 숫자는 w / 작은 숫자는 h
2. w(큰숫자) max * h(작은숫자) max 구하기
=> 핵심은 배열 [0]과 [1]을 비교해서 큰 수와 작은수로 구분후 각각의 최대값을 구하는 것
(2) 내 풀이 (미제출)--> 실패함 (이렇게 풀 필요가 없었음😢😢)
function solution(sizes) {
//1 : flat()으로 1차원배열로 풀기 + 중복없애기(set) + 최대값(max): 배열 스프레드로 풀기
//Max = 80
let Max = [...new Set(sizes.flat())];
Max = Math.max(...Max);
//2: 반복문 + (가로*세로) = 새로운 배열 생성 + 세로길이만 새로운 배열 생성 (newArr2)
//newArr = [ 3000, 2100, 1800, 3200 ]
//newArr2 = [ 50, 70, 30, 40 ]
let newArr = [];
let newArr2 = [];
for (let i = 0; i < sizes.length; i++) {
newArr.push(sizes[i][0] * sizes[i][1]);
newArr2.push(sizes[i][1]);
}
//3.newArr의 최대값 + 세로길이 배열 정렬
//newArrMax= 3200
let newArrMax = Math.max(...newArr);
newArr2.sort((a, b) => a - b);
//4. 1번 * (size h 오름차순 정렬) >= 3번
//Max = 80
//newArr2= [ 30, 40, 50, 70 ]
//newArrMax =3200
return Max * newArr2[newArr2.length - 1];
[풀이]
1. size의 w,h 중에서 max값 찾기 --> array.flat() 사용
▶ flat()으로 1차원배열로 풀기 + 중복없애기(set) + 최대값(max): 배열 스프레드로 풀기
2. size의 인덱스마다 곱한 값 새로운 배열로 재생성
3. 새로운 배열에서 최대값 찾기
4. 1번 * (size h 오름차순 정렬) >= 3번
5. 1번 * 나온값 => return
==> flat() + set 값을 활용해서 1차원 배열과 중복 없애서 나온 최대값 * 인덱스[1]의 값 중 한개를
인덱스 [0]과 [1]을 곱해서 나온 최대값을 비교해서 출력하려고했다.
생각을 잘못해서 시간을 너무 썼지만, 그래도 flat()과 set을 활용해 볼 수 있었다.
끝.
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스 | JavaScript] 숫자 문자열과 영단어 (0) | 2023.12.13 |
---|---|
[프로그래머스 | JavaScript] 시저 암호 (1) | 2023.12.07 |
[프로그래머스 | JavaScript] 크기가 작은 부분문자열 (0) | 2023.11.30 |
[프로그래머스 | JavaScript] 삼총사 (0) | 2023.11.30 |
[프로그래머스 | JavaScript] 이상한 문자 만들기 (1) | 2023.11.30 |