Today I Learned
- Programmers 문제 풀기
Programmers 문제 풀기
최댓값 만들기 (2)
나의 풀이
function solution(numbers) {
let answer = 0;
for ( i = 0; i < numbers.length; i++ ) {
for ( j = 0; j < numbers.length; j++ ) {
if ( i !== j && numbers[i] * numbers[j] >= answer ) {
answer = numbers[i] * numbers[j]
}
}
}
return answer;
}
처음에 answer에 0을 할당하고 시작했더니 원소 두 개를 곱했을 때의 최댓값이 0 이하인 경우의 테스트케이스를 통과하지 못했기 때문에 answer에 0 말고 뭔가 다른 것을 할당해 줄 수 있나 검색을 해봤다.
function solution(numbers) {
let answer = Number.MIN_SAFE_INTEGER;
for ( i = 0; i < numbers.length; i++ ) {
for ( j = 0; j < numbers.length; j++ ) {
if ( i !== j && numbers[i] * numbers[j] >= answer ) {
answer = numbers[i] * numbers[j]
}
}
}
return answer;
}
검색해 보니 변수의 초기값을 할당할 때 최소 정수값이라는 게 있길래 이걸 이용해서 풀었다. 근데 내 풀이는 이중 for문으로 너무 비효율적으로 푼 거 같고 다른 사람들 풀이를 보니까 sort 메서드를 많이 쓴 거 같다.
변수의 초기값을 최대 정수값이나 최소 정수값을 정의하는 방법
- Number.MAX_SAFE_INTEGER: JavaScript에서 안전한 최대 정수값을 나타내게 된다.
Number.MAX_SAFE_INTEGER
// 9007199254740991
- Number.MIN_SAFE_INTEGER: JavaScript에서 안전한 최소 정수값을 나타내게 된다.
Number.MAX_SAFE_INTEGER
// -9007199254740991
출처 https://velog.io/@ahsy92/최대최소-정수값-설정하기
다른 사람의 풀이 01
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 배열을 sort 메서드를 이용해서 정렬한 다음에 Math.max로 최댓값을 찾는다.
Math.max를 이용할 때는 0번째 1번째를 곱한 값과 뒤에서 첫 번째, 두 번째 인덱스를 곱한 값 중에서 최댓값을 찾는다. 예를 들면 테스트 1에서 -5 * -3의 값과 2 * 4의 값을 비교해서 둘 중에서 더 큰 값인 15를 최댓값으로 출력하는 것이다.
다른 사람의 풀이 02
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);
}
나는 이중for문을 돌리면서 answer라는 변수와 바로바로 최댓값을 비교했지만 각 원소를 곱한 값을 배열에 push 해서 이 배열 안에 최댓값을 구하는 방법도 있다.
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.03.27 기술면접 스터디, Programmers 문제 풀기 (4) | 2023.03.27 |
---|---|
[TIL] 2023.03.26 Programmers 문제 풀기 (3) | 2023.03.26 |
[TIL] 2023.03.24 Programmers 문제 풀기 (0) | 2023.03.24 |
[TIL] 2023.03.23 Programmers 문제 풀기 (0) | 2023.03.23 |
[TIL] 2023.03.22 Programmers 문제 풀기, 인텔리픽 모의면접 후기 (0) | 2023.03.22 |
댓글