이번 글은 '이것이 취업을 위한 코딩 테스트다 with 파이썬' 내 문제를 풀고, 정답 코드를 정리한 것입니다.
문제
풀이 과정
이번 문제는 주어진 배열에서 최솟값과 최댓값만 뽑아낼 줄 알면 쉽게 풀 수 있는 문제이다. 내 풀이의 경우 먼저 input값을 정제하여 이중배열을 만들고 이중배열의 행을 탐색하기 위해 n만큼 for문을 돌며 배열을 탐색한다. 이후 각 행의 가장 첫 값을 변수 min에 최솟값이라고 임의로 할당하고 각 열의 다음 값과 최솟값을 비교하기 위해 한 번더 배열을 행의 길이만큼 돈다. 이렇게 안쪽 배열을 탐색하며 앞서 할당한 min보다 작은 값이 나올 경우 min을 그 값으로 치환한다. 이후 이렇게 찾아낸 각 행의 최솟값을 정답 배열에 담고 정답 배열을 내림차순으로 정렬한 다음 맨 첫 번째 값을 리턴하면 정답이다. 즉 각 행의 최솟값을 구해 그 최솟값 중 가장 큰 값을 반환하면 되는 것이다.
정답 코드
My Solution
function mySolution(_n, _m, _data) { const ans = []; for (let i = 0; i < _n; i++) { let min = +_data[i][0]; for (let j = 0; j < _data[i].length; j++) { if (min === 0) continue; let next = +_data[i][j]; if (min > next) { min = next; } } ans.push(min); } return ans.sort((a, b) => b - a)[0]; }
Answer
1. Math.min() & Math.max() 활용 Ver.
function minMaxSolution(_n, _m, _data) { const ans = []; for (let i of _data) { const arr = i; const min = Math.min(...arr); ans.push(min); } return Math.max(...ans); }
2. 2중 for문 Ver.
function forLoopSolution(_n, _m, _data) { const ans = []; for (let i of _data) { const arr = i; let min = 10001; for (let j of arr) { if (min > +j) { min = j; } } ans.push(min); } return Math.max(...ans); }
함께 보기
Math.max() - JavaScript | MDN
The Math.max() function returns the largest of the numbers given as input parameters, or -Infinity if there are no parameters.
developer.mozilla.org
Math.min() - JavaScript | MDN
The Math.min() function returns the smallest of the numbers given as input parameters, or Infinity if there are no parameters.
developer.mozilla.org
'👩💻 Programming > Coding Test 문제 풀이' 카테고리의 다른 글
[이코테] 그리디_곱하기 혹은 더하기(파이썬/자바스크립트) (0) | 2022.11.25 |
---|---|
[이코테] 그리디_모험가 길드(파이썬/자바스크립트) (0) | 2022.11.24 |
[이코테] 그리디_큰 수의 법칙 (0) | 2022.09.15 |
[Programmers] level 1: 최대공약수와 최대공배수 by JavaScript (0) | 2022.07.10 |
[Programmers] level 1: 시저 암호 by JavaScript (0) | 2022.07.10 |
댓글