-
프로그래머스 최댓값 만들기 (2)STUDY/Code TEST 2023. 7. 1.
[level 0] 최댓값 만들기 (2) - 120862
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
성능 요약
메모리: 33.4 MB, 시간: 0.05 ms
구분
코딩테스트 연습 > 코딩테스트 입문
채점결과ㅁ
Empty
문제 설명
정수 배열
numbers
가 매개변수로 주어집니다.numbers
의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
제한사항
- -10,000 ≤
numbers
의 원소 ≤ 10,000 - 2 ≤
numbers
의 길이 ≤ 100
입출력 예
numbers result [1, 2, -3, 4, -5] 15 [0, -31, 24, 10, 1, 9] 240 [10, 20, 30, 5, 5, 20, 5] 600
입출력 예 설명
입출력 예 #1
- 두 수의 곱중 최댓값은 -3 * -5 = 15 입니다.
입출력 예 #2
- 두 수의 곱중 최댓값은 10 * 24 = 240 입니다.
입출력 예 #3
- 두 수의 곱중 최댓값은 20 * 30 = 600 입니다.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
코드
function solution(numbers) { let len = numbers.length numbers.sort(function(a, b) { return a - b; }) if(numbers[0] * numbers[1] < (numbers[len-2] * numbers[len-1])){ return (numbers[len-2] * numbers[len-1]) }else return numbers[0] * numbers[1] }
다른 사람의 풀이
function solution(numbers) { numbers.sort((a, b) => a - b); return Math.max(numbers[0]*numbers[1], numbers[numbers.length-1]*numbers[numbers.length-2]); }
코드 설명
정수 배열 numbers 원소의 값은 -10,000 과 10,000 범위이기 때문에 음수 2개를 곱했을 때의 값도 파악을 해야한다. 결론적으로 최댓값을 구하기 위해서는 음수 중 가장 낮은 값 2개를 곱한 값과 양수 중 가장 높은 값 2개를 곱한 값만 비교하면 구할 수 있다. 그래서 먼저 sort 메서드로 배열안의 값들을 순서대로 정렬을 한 다음에 정렬한 배열에서 가장 낮은 값의 인덱스 0과 1 가장 높은 값의 인덱스, 배열의 길이-2, -1로 곱한 값들을 비교해주었다.
그리고 다른 사람의 풀이 중 가장 깔끔한 코드를 가져왔다.
기본적으로 풀이 자체는 나랑 같았지만, 화살표 함수와 Math.max 함수를 이용해서 더 깔끔하게 풀어냈다.
같은 풀이이고 같은 값을 도출해내지만 코드 길이는 나의 4분의 1 줄밖에 되지않는다.🥲
이런 메서드 자체를 인지하고 있지만, 알고리즘 풀이에 조건문만 보이면 반사적으로 if문을 쓰고 있는 내가 보인다..
의식적으로 좀 더 다양한 메서드를 쓰는 연습을 계속 해야할것 같다..'STUDY > Code TEST' 카테고리의 다른 글
프로그래머스 최빈값 구하기 (0) 2023.07.14 프로그래머스 같은 숫자는 싫어 - 미완 (0) 2023.07.04 프로그래머스 가운데 글자 가져오기 (0) 2023.06.29 프로그래머스 2016년 (0) 2023.06.28 프로그래머스 팩토리얼 (0) 2023.06.27 - -10,000 ≤