티스토리 뷰
문제 첫인상
처음엔 회전에 대해서 구구절절 설명하길래 엄청 어려운 문제인 줄 알고 지레 겁을 먹었다.
그러나 전체적으로 읽고 해당 문제를 어떻게 풀지 생각할 시간을 가졌는데, 단순하게 최댓값을 활용하면 될 것 같았다.
자바스크립트로 문제 푸는 게 처음이라 코드 작성이 낯설게 느꼈던 듯 하다.
풀이 방법 1.
1) 각 원소(배열) 내에서 큰 값을 최댓값으로 저장한다.
2) 각 원소를 돌면서 최댓값과 해당 원소의 큰 값을 비교하여, 더 큰 걸 최댓값으로 재할당한다.
3) 각 원소(배열) 내에서 작은 값은 최솟값과 비교하여 더 큰 걸 최솟값으로 재할당한다.
즉, 긴 변들 중 가장 긴 값과 짧은 변들 중 가장 긴 값을 구해 곱한다.
풀이 1. 최댓값
function solution(sizes) {
let maxSideValue = 0;
let minSideValue = 0;
for(let i=0; i<sizes.length; i++) {
let w = sizes[i][0];
let h = sizes[i][1];
let biggerValue = Math.max(w, h);
let smallerValue = Math.min(w, h);
maxSideValue = Math.max(biggerValue, maxSideValue);
minSideValue = Math.max(smallerValue, minSideValue);
console.log(`max: ${maxSideValue}, min: ${minSideValue}`);
}
return maxSideValue * minSideValue;
}
풀이 방법 2. for, if
풀이 1과 같지만, 두 값을 비교할 때 Math.max 대신 if로 분기한다.
풀이 코드 2. for, if
function solution(sizes) {
let maxValue = 0;
let minValue = 0;
for (let size of sizes) {
let weight = size[0];
let height = size[1];
if (weight > height) {
if (weight > maxValue) {
maxValue = weight
}
if (height > minValue) {
minValue = height
}
} else {
if (height > maxValue) {
maxValue = height
}
if (weight > minValue) {
minValue = weight
}
}
}
return maxValue * minValue;
}
https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'CS > Algorithm' 카테고리의 다른 글
[프로그래머스] 문자열 내 마음대로 정렬하기 (JavaScript) (0) | 2023.01.20 |
---|---|
[BOJ] 10818번 최소, 최대 - min/max 함수 외 (0) | 2022.05.27 |
[자료구조] 파이썬으로 스택(Stack), 큐(Queue) 구현하기 (0) | 2022.04.11 |
댓글