문제: https://school.programmers.co.kr/learn/courses/30/lessons/120889
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
//내풀이
function solution(sides) {
//입 : 세변 길이가 담긴 sides [1,2,3]
//출 2 or 1
//sides ->가장 큰 수와 인덱스 번호 찾기 [수,인덱스]
//두변의 합 더하기 sides.reduce(()=>{});
//두변의 합 가장큰수 비교 크거나 같으면 2 아니면 0 리턴
//[3,6,2]
let max = sides[0];//3
let indexMax =0; //0
sides.map((x,idx)=>{
if(max<x){
max = x; //6
indexMax= idx; //1
}});
let sum = sides.reduce((acc,cur,id)=>{
if(indexMax!==id){//6!==3
return cur + acc; //0+3 acc= 3 5
}else{
return acc; //3
}
},0);
//console.log(sum);
if(sum>max){
return 1;
}else{
return 2;
}
}
이 문제는 예전에 테스트 통과는 했지만 제출통과가 안되서 원인을 못찾다가 뒤로 미뤄둬던 문제였습니다. 원인은 최댓값이 아닌 숫자를 찾을 때 인덱스로 비교하며 찾았어야 했는데 최댓값과 숫자 비교로 찾았기 때문이였습니다. 결국 최대값이 두개 인 경우의 테스트에 통과가 되지 않았습니다. 지금 당장 막히는 지식과 어려움도 조금 숨을 고르고 나중에 문제를 바라보면 언젠가는 해결할 수 있다는 생각이 증명된 하루 였습니다. 그리고 그전에 막혔던 어려움을 외면하는 것이 아니라 숨을 고르고 꼭 다시 바라보는 자세가 중요하다고 생각했습니다.
//다른 사람 풀이
function solution(sides) {
var answer = 0;
const max = Math.max(...sides); // 유용할 것 같 은 방식
const sum = sides.reduce((a,b) => a + b, 0) - max;
answer = max < sum? 1 : 2;
return answer;
}
Math.max()
//Math.max() 씹고뜯고 맛보고 즐기기
// 함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환
console.log(Math.max(1,2,-1));//2
console.log(Math.max(-1, -3, -2));
// Expected output: -1
console.log(Math.max( )); //-infinity
console.log(Math.max( "1","2")); //숫자 2반환
let num = Math.max("1","2");
console.log(typeof num); // number
아마 Math.max()는 스프레드 문법이랑 많이 사용되지 않을 까 생각됩니다.
'codingTest' 카테고리의 다른 글
프로그래머스-모의고사 완전탐색 풀이 (0) | 2023.04.26 |
---|---|
코플릿 superIncreasing (0) | 2023.04.03 |
3. 옷가게 할인 받기 프로그래머스 (작성중) (0) | 2023.03.27 |
2. 코플릿 replace() 정규식 (0) | 2023.03.24 |
1.프로그래머스-순서쌍 Number.inInteger() (0) | 2023.03.22 |