https://school.programmers.co.kr/learn/courses/30/lessons/120868
function solution(sides) {
const [sidesMin, sidesMax] = sides.sort((a,b)=>a-b);
let answer = 0;
// sidesMax가 가장 긴 변인 경우
for (let i = 1; i <= sidesMax; i++){
if (i + sidesMin > sidesMax) {
answer++;
}
}
// 나머지 한 변이 가장 긴 변인 경우
for (let i = sidesMax + 1; i < sidesMin + sidesMax; i++){
if (sidesMin + sidesMax > i) {
answer++;
}
}
return answer;
}
두 가지 경우로 나눠 계산했다.
sidesMax가 가장 긴 변인 경우, 1
부터 시작한 i
와 sidesMin
의 합이 sidesMax
보다 큰 경우가 있다면 answer
를 하나씩 늘린다.
나머지 한 변이 가장 긴 변인 경우, sidesMax + 1
부터 시작해 sides
의 합보다 작은 값이 있으면 answer
를 늘린다. 위에서 i
가 sidesMax
값과 같을 때를 계산했으므로, 여기서 sidesMax + 1
했다.
https://school.programmers.co.kr/learn/courses/30/lessons/120864
function solution(my_string) {
return my_string.replace(/\D/g, " ").split(" ").reduce((a,c)=>a + +c, 0);
}
문자열에서 숫자가 아닌 것을 공백으로 만들고, 공백을 기준으로 배열화 했다. reduce
를 이용해 배열의 합을 구했다.
split
의 구분자를 replace
의 정규식으로 대체해도 되었다. 구분자에 정규식도 들어갈 수 있음을 잊지 말자.
https://school.programmers.co.kr/learn/courses/30/lessons/120863#
function solution(polynomial) {
let x = 0, num = 0;
polynomial.split(" + ").forEach((v)=>{
if (v.match(/\d+(?=x)/g)) {
x += +v.match(/\d+(?=x)/g);
} else if (v === "x") {
x++;
} else if (v.match(/\d/g)) {
num += +v;
}
})
if (x > 1) {
return num ? `${x}x + ${num}` : `${x}x`;
} else if (x === 1) {
return num ? `x + ${num}` : `x`;
} else {
return `${num}`;
}
}
+
를 기준으로 배열화하여 요소를 정규식으로 검사했다. x
앞에 계수가 있을 경우, 계수가 없을 경우, 상수인 경우로 분기했다.
반환값의 분기는 x가 1보다 큰 경우, x가 1인 경우, x가 0인 경우로 나눠 결과를 반환했다.