function solution(sides) {
const long = Math.max(...sides);
const longIndex = sides.indexOf(long);
const shortIndex = longIndex === 0 ? 1 : 0;
const longSide = sides[longIndex];
const shortSide = sides[shortIndex];
let ans = longSide - (longSide - shortSide + 1) + 1;
ans += longSide + shortSide - longSide - 1;
return ans;
}
음...정말 직관적인 풀이법이다.
예시 입출력값으로 주어진 것을 보고 그대로 코드로 작성하면 된다.
연산 부분을 더 줄이면 이렇게 된다.
function solution(sides) {
const long = Math.max(...sides);
const longIndex = sides.indexOf(long);
const shortIndex = longIndex === 0 ? 1 : 0;
const longSide = sides[longIndex];
const shortSide = sides[shortIndex];
let ans = shortSide;
ans += shortSide - 1;
return ans;
}
결과적으로 입력값으로 주어진 배열에서 (더 작은 값 * 2) - 1
이 답이라는 것이다.
그래서 극한으로 줄이면 이렇게 된다.
function solution(sides) {
return Math.min(...sides) * 2 - 1;
}
아무래도 수학적인 지식을 가지고 쉽게 해결 할 수 있는 문제인 것 같은데,
꼭 그런 지식이 없더라도, 코드를 작성하고 공통부분을 줄이면 저런 코드를 만들어낼 수 있게된다...