문제
https://school.programmers.co.kr/learn/courses/30/lessons/120862?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🐍파이썬
def solution(numbers):
numbers.sort()
plus = numbers[-1] * numbers[-2]
if numbers[0] < 0 and numbers[1] < 0:
if plus < (numbers[0] * numbers[1]):
return numbers[0] * numbers[1]
return plus
1️⃣ numbers를 정렬한다.
2️⃣ plus 변수에 절댓값이 가장 큰 -1번째 인덱스와 다음으로 절댓값이 큰 수인 -2번째 인덱스 값을 곱하여 대입한다.
3️⃣ 부호가 (-)인 수가 2개 이상 있는지 확인하고, (-)가 한 개나 그 이하라면 plus 값을 그대로 리턴한다. ☞ (-)가 한 개이면 그 수의 절댓값과 관련 없이 어떤 수와 곱해도 (-)가 나오기 때문에 plus가 가장 큰 수이다.
4️⃣ 부호가 (-)인 수가 2개 이상이라면 가장 절댓값이 큰 0번째 인덱스, 1번째 인덱스의 값을 곱하고 그 수를 plus 값과 비교한다. numbers[0] * numbers[1]가 plus보다 더 큰 값이라면 numbers[0] * numbers[1]를 리턴한다.
5️⃣ numbers[0] * numbers[1]가 plus보다 작다면 plus를 리턴한다.
다른 풀이 방법
def solution(numbers):
numbers = sorted(numbers)
return max(numbers[0] * numbers[1], numbers[-1]*numbers[-2])
(-)가 하나라면 어차피 두번째 인수가 더 클테니 부호 갯수를 신경쓸 필요 없이 더 큰 수를 고르면 되었다...😂
🐥자바스크립트
function solution(numbers) {
numbers.sort(function(a, b) {
return a - b;
});
return Math.max(numbers[0] * numbers[1], numbers[numbers.length-1] * numbers[numbers.length-2]);
}
위의 파이썬 풀이를 참고해 풀이했다.
❗❗ 참고
파이썬과 달리 자바스크립트의 sort()의 기본 정렬 순서는 문자열의 유니코드 코드값이다. 따라서 숫자를 정렬하기 위해서는 위와 같이 sort() 내부에 정렬 기준을 명시하는 함수를 추가해 주어야 한다.
Array.prototype.sort() - JavaScript | MDN
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
developer.mozilla.org
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | 파이썬 / 자바스크립트] 안전지대(코딩테스트 입문/ level 0) (0) | 2023.02.22 |
---|---|
[프로그래머스 | 파이썬 / 자바스크립트] 자릿수 더하기(코딩테스트 입문/ level 0) (0) | 2023.02.21 |
[프로그래머스 | 파이썬 / 자바스크립트] n의 배수 고르기(코딩테스트 입문/ level 0) (2) | 2023.02.21 |
[프로그래머스 | 파이썬 / 자바스크립트] 숨어있는 숫자의 덧셈 (1)(코딩테스트 입문/ level 0) (0) | 2023.02.20 |
[프로그래머스 | 파이썬 / 자바스크립트] 문자열 정렬하기 (2)(코딩테스트 입문/ level 0) (0) | 2023.02.20 |
[프로그래머스 | 파이썬 / 자바스크립트] 숫자 찾기(코딩테스트 입문/ level 0) (0) | 2023.02.20 |