[문제 링크]
https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[문제 사고]
이중 배열을 완전 탐색하여 주어진 조건에 충족할 수 있도록 정렬한 후 필요한 요소를 뽑아내어 연산하여 결과를 도출한다.
[문제 해결]
<1번 풀이>
1. 가로 길이를 세로 길이보다 큰 수치로 만들어 놓기 위해 이중 배열을 순회하며 오름차순으로 정렬한다.
2. 가로 길이를 넣어둘 배열과 세로 길이를 넣어둘 배열을 생성한다.
3. 정렬한 배열을 순회하며 가로 길이 값들을 가로 배열에, 세로 길이 값들을 세로 배열에 push해준다.
4. 가로,세로 배열을 내림차순으로 정렬한 후 0번째 인덱스 값을 뽑아내어 곱해준다.
<2번 풀이>
1. 가로 길이를 세로 길이보다 큰 수치로 만들어 놓기 위해 이중 배열을 순회하며 오름차순으로 정렬한다.
2. 이중 배열의 0번째 인덱스 값들을 내림차순으로 정렬하여 첫번째 값을 width로 선언한 가로 변수 값에 넣어준다.
3.이중 배열의 1번째 인덱스 값들을 내림차순으로 정렬하여 첫번째 값을 height로 선언한 세로 변수 값에 넣어준다.
4. 가로,세로 값을 곱해준다.
[작성 코드]
//1번 풀이
function solution(sizes) {
const arr = sizes.map(e => e.sort((a,b) => a - b));
const width = [];
const height = [];
arr.map(e => {
width.push(e[0])
height.push(e[1])
})
return (width.sort((a,b) => b - a))[0] * (height.sort((a,b) => b - a))[0];
}
//2번 풀이
function solution(sizes) {
const arr = sizes.map(e => e.sort((a,b) => a - b));
const width = (arr.sort((a,b) => b[0] - a[0]))[0][0];
const height = (arr.sort((a,b) => b[1] - a[1]))[0][1];
return width * height;
}
[문제 회고]
문제 자체가 깊게 사고할 부분도 없으며 완전 탐색이 필요하며 배열의 정렬이 필요하다는 부분은 문제를 이해하자마자 바로 떠올릴 수 있었다. 하지만 배열의 완전 탐색 과정과 배열을 정렬한 후 필요한 값인 최대값만 뽑아내는 과정에서 효율적인 방법을 떠올리는 데에 시간을 좀 할애했다. 탐색 횟수를 줄이려고 노력했고 정렬을 가능한 적은 횟수로 처리하려고 시도해보았다.
'Coding Test > 항해99 - 코테 스터디 2기' 카테고리의 다른 글
99클럽 코테 스터디 10일차 TIL(5월 30일) + 알고리즘 DFS (0) | 2024.05.30 |
---|---|
99클럽 코테 스터디 9일차 TIL(5월 29일) + 알고리즘 완전 탐색 (2) | 2024.05.29 |
99클럽 코테 스터디 7일차 TIL(5월 27일) + 알고리즘 정렬 (0) | 2024.05.27 |
99클럽 코테 스터디 6일차 TIL(5월 26일) + 알고리즘 정렬 (0) | 2024.05.26 |
99클럽 코테 스터디 5일차 TIL(5월 25일) + 자료구조 Array (0) | 2024.05.25 |