728x90
문제
나의 풀이
function solution(sizes) {
var answer = 0;
let width = 0;
let height = 0;
for (let i = 0; i < sizes.length; i++)
{
if(sizes[i][0] < sizes[i][1])
{
let temp = sizes[i][0]
sizes[i][0] = sizes[i][1]
sizes[i][1] = temp;
}
}
for (let i = 0; i< sizes.length; i++)
{
if(width < sizes[i][0])
{
width = sizes[i][0]
}
if(height < sizes[i][1])
{
height = sizes[i][1]
}
}
answer = width * height;
return answer;
}
설명
우선 가로 세로중 큰 값이 고정적으로 가로로 오게 하기 위해서 처음 for문을 써줬다. sizes[i][0] => i번째의 가로라는 뜻
그렇게하여서 가로로 값을 고정시키고 width와 height 변수를 만들어서 sizes[i][0] 현재의 가로보다 작을경우 width를 적용 시키고 height도 마찬가지로 따로 적용시켜 가로와 세로의 최대 길이를 구한다음 둘을 곱해줘 문제를 해결하였다.
다른사람의 풀이
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];
}
보고 되게 깔끔하다고 느껴졌던 코드이다. 우리가 for문을 써서 뒤집기를 힘들게 하였을때 map을 사용하여서 w 가로가 세로보다 작을시 [h, w]를 해서 위치를 바꿔주고 아닐시 [w, h]를 사용하여서 그대로 진행하게 하여서 가로 세로 정렬을 하였고, forEach를 적용시켜서 w와 h의 사이즈를 각각 구해주었다.
map과 foreach에 대한 이해가 되어있지만 응용이 안되기 때문에 학습이 조금더 필요하다고 느꼈다.
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS] 문자열 내 마음대로 정렬하기 (0) | 2024.06.03 |
---|---|
[프로그래머스/JS] 시저 암호 (0) | 2024.05.30 |
[프로그래머스/JS] 이상한 문자 만들기 (0) | 2024.05.27 |
[프로그래머스/JS] 3진법 뒤집기 (0) | 2024.05.24 |
[프로그래머스/JS] 최대공약수와 최소공배수 (0) | 2024.05.23 |