[TIL] 항해99 2주차 1DAY

seungbox·2023년 2월 13일
0

TIL

목록 보기
1/13

항해 2주차가 시작되면서 프로그래밍 기초에대해 배우기 시작했다.

알고리즘을 풀다보니 꽉 막히게 되는 느낌이 들었다.

❓ 문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/86491?language=javascript

const sizes = [[60, 50],[30, 70],[60, 30],[80, 40]];

function solution() {
	const maxWidth = Math.max(...sizes.flat());
  	const maxHeight = Math.min(...sizes.flat());
  
    return maxWidth * maxHeight

처음에 이렇게 단순하게 생각을 해보았는데 이렇게 하면 maxHeight 값은 30이라는 단순히 배열에서 가장 작은 수가 나오게 된다. 배열을 돌다가 값이 큰값을 반환을 하고 a 보다 b가 크다면 b값을 반환하는건 어떻까 라는 생각을 해보고 코드를 적을려해봤지만 도저히 생각이 나지않아 구글링을 하여 다른 사람들은 어떻게 했는지 참고하였다.

sizes라는 배열에 map을 달아서 조건을 걸어 주어보았다.

	const resize = sizes.map([w,h] => (w < h) ? [h,w] : [w,h] )

이 문제에서 중요했던 것은 '명함을 돌리면 지갑에 들어간다' 라는 부분이었다고 생각한다.
배열을 돌다가 w나 h중 둘중에 높은 수를 배열의 [0]에 배치를 한다

	let maxWidth = 0;
    let maxHeight = 0;

	resize.forEach([w, h]) =>{
    	maxWidth = Math.max(maxWidth, w);
        maxHeight = Math.max(maxHeight, h);
    }

그리고 forEach를 사용해서 각 배열의 인덱스 중 최대값을 찾아주면 문제가 해결되었다.

  • Array.prototype.map()
    - 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환
  • Array.prototype.forEach()
    - 함수를 이용해 배열 순회
    - ex) array.forEach( function() { // code } );
profile
함께 하는 개발자

0개의 댓글