-
프로그래머스(입문)_최대값만들기(2)JavaScript/Coding_Problems 2023. 1. 28. 11:32
1차시도
function solution(numbers) { var answer = 1; var minus_arr = new Array(); var plus_arr = new Array(); numbers.forEach((number, index, array) =>{ if(number >= 0){ plus_arr.push(number) }else{ minus_arr.push(number) } }) plus_arr.sort( function(a,b) {return b-a}); minus_arr.sort( function(a,b) {return a-b}); [p1, p2, ...rest] = plus_arr; [m1, m2, ...rest] = minus_arr; // 음수배열이 없을 때는 플러스만 고려 if(minus_arr.length <=1){ answer = p1 * p2 }else{ if(p1 * p2 >= m1 * m2){ answer = p1 * p2 }else{ answer = m1 * m2 } } return answer } 정확성: 91.7 합계: 91.7 / 100.0
2차시도
function solution(numbers) { var answer = 1; var minus_arr = new Array(); var plus_arr = new Array(); numbers.forEach((number, index, array) =>{ if(number >= 0){ plus_arr.push(number) }else{ minus_arr.push(number) } }) plus_arr.sort( function(a,b) {return b-a}); minus_arr.sort( function(a,b) {return a-b}); [p1, p2, ...rest] = plus_arr; [m1, m2, ...rest] = minus_arr; if(numbers.length === 2){ // 반례 numbers 배열 길이가 [-1,2] 처럼 '2' 일때! answer = numbers[0] * numbers[1] }else{ // 음수배열이 없을 때는 플러스만 고려 if(minus_arr.length <=1){ answer = p1 * p2 }else{ if(p1 * p2 >= m1 * m2){ answer = p1 * p2 }else{ answer = m1 * m2 } } } return answer } 정확성: 100.0 합계: 100.0 / 100.0
다른사람풀이 - 1
function solution(numbers) { let max_num = numbers[0] * numbers[1]; for( let i = 0; i < numbers.length-1; i++){ const first = numbers[i]; for( let j = i+1; j < numbers.length; j++){ const second = numbers[j]; if( max_num < first*second){ max_num = first * second } } } return max_num }
다른 사람 풀이 - 2
function solution(numbers) { var answer = 0; numbers.sort((a,b) => a-b); return Math.max(numbers[0]*numbers[1], numbers[numbers.length-1] * numbers[numbers.length-2]) }
다른 사람 풀이 - 3
function solution(numbers){ var answer = []; for(let i=0; i < numbers.length-1; i++){ for(let j= i+1; j<numbers.length; j++){ answer.push(numbers[i] * numbers[j]); } } return Math.max(..answer) // Array의 최대, 최소값을 구할 때 ... 을 해줘야한다!! }
출처:
[프로그래머스 | Javascript] 코딩테스트 입문 - 최댓값 만들기 (2)
하나의 기준을 잡고, 다른 값들을 움직여가며 최대값을 갱신해나가는 풀이이다.for를 2중으로 사용한다는 것 외에는 이해하기 좋은 코드라고 생각된다..
velog.io
'JavaScript > Coding_Problems' 카테고리의 다른 글
프로그래머스_입문_피자나눠먹기(2) (0) 2023.02.01 프로그래머스(입문)_개미군단 (0) 2023.01.23 프로그래머스(입문)_모음제거 (0) 2023.01.10 프로그래머스(입문)_자릿수 더하기 (0) 2023.01.01 프로그래머스(입문) - 배열의유사도 (0) 2023.01.01