본문 바로가기

아래로 스크롤 해주세요!

My Reference Book

-

제가 배웠던것을 한곳에 정리해보았어요!

HTML

HTML 태그 톺아보기

HTML

자세히보기

CSS

CSS 속성 톺아보기

CSS

자세히보기

JAVASCRIPT

JS 실행문 톺아보기

JAVASCRIPT

자세히보기

최신댓글

프로그래머스

프로그래머스 1단계 : 최소직사각형!

by C0Di 2022. 12. 5.
728x90

프로그래머스 1단계

최소직사각형 문제를 풀어보자 🔳


최소직사각형!

map과 Push를 통해 정답을 도출해내는 방법입니다.

1. 가로 혹은 세로가 긴 명함이지만 명함은 회전 시킬 수 있기 때문에
2. 가로와 세로 중 더 큰 값을 가로에
3. 작은 값은 세로가 되도록 명함의 사이즈들을 변경합니다.
4. 가로 길이 중 max값 * 세로 길이 중 max값을 통해
5. 모든 명함이 들어갈 수 있는 최소 사이즈 반환

function solution(sizes) {
    let arr = sizes.map(size => size[0] > size[1] ? [size[0], size[1]] : [size[1], size[0]]);

    const width = [];
    const height = [];

    for (let i = 0; i < arr.length; i++) {
        width.push(arr[i][0]);
        height.push(arr[i][1]);
    }

    return Math.max(...width) * Math.max(...height);
}

최소직사각형 : 다른 사람 풀이

for/if 와 sort를 통한 방법입니다.

1. 명함들을 순회하면서 가로를 큰 쪽으로 돌린다. 즉, 명함이 세로가 더 길고 가로가 더 짧으면 눕혀서 가로 세로를 반대로 바꾸어 가로를 큰 쪽으로, 세로를 작은 쪽으로 돌린다.
2. 1번을 수행하고 나면, 모든 명함이 큰 쪽이 가로, 작은 쪽이 세로가 되어있다.
3. 그러면 최소한의 지갑을 만들기 위해서는 가로에서 제일 큰 값, 세로에서 제일 큰 값의 지갑을 만들어야 한다.
4. 정렬을 통해 원하는 부분을 추출하고 return 한다.

function solution(sizes) {
    let answer = 1
  
    // 가로의 길이를 제일 긴 변으로 설정 후 회전
    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]]
      }
    }
  
    // 가로의 최대값 * 세로의 최대값 = 최소 지갑
    let x = sizes.sort((a, b) => b[0] - a[0])[0][0]
    let y = sizes.sort((a, b) => b[1] - a[1])[0][1]
    answer = x * y
    return answer
  }
728x90
반응형

댓글

#HASH_TAGS

-

1

ImageSlideEffect 이건 또 뭐람 오징어 두마리 포획 완료 메서드 숙제가 다양해서 너무 좋아요 scroll-snap-align 공부 필터선택자 오늘도 웹표준은.. 슬라이드 결과 : 월요일 JQuery 다크모드 멈추지 않는 ' j ' 시리-즈 오징어 1Kg 당 3000원 Method 코드 내일은 즐거운 월요일 오늘 조업 마감했습니다. 울적하니 꽃을 달아봤습니다 오징어 한마리 수확 완료! 오늘은 내가바로 오징어! 화사한가요? HTML 선택해주세요 코딩 scroll-snap-type 제이쿼리