function solution(n) {
let str = String(n)
let result = 0
for(i=0; i<str.length; i++){
result += Number(str(i))
}
return result;
}
console.log(solution(1234))
console.log(solution(930211))
정수 n을 매개 변수로 사용하고 n의 각 자리수의 합계를 반환하는 함수입니다.
각 요소가 분리되어 있지 않고 1234 => 천이 134와 같이 결합되어 있기 때문에 String 함수를 사용하여 문자열화 해준다.
반복문을 사용하여 문자열화된 str의 i번째 인덱스를 Number 함수를 사용하여 result에 계속 추가합니다.
Number 함수를 사용하지 않으면 문자열 ‘1’, ‘2’, ‘3’, ‘4’가 결과에 들어가므로 01234가 출력됩니다.
즉, Number 함수에 수치 변환 후의 증감 연산자를 개입시켜 가산한 것입니다.
function solution(n) {
var answer = 0;
for(i=0; i <= n; i++){
if(n % i === 0){
answer++
}
}
return answer;
}
console.log(solution(20))
console.log(solution(100))
n을 n 이하의 자연수로 나누어 몇 번 나누어 떨어지는지 카운트하면 문제를 해결할 수 있다고 생각했다.
i는 n 이하만 반복되어 n과 i가 몇 번 나누어 떨어지는지 answer에 카운트되게 된다.
function solution(hp) {
let 장군 = Math.floor(hp / 5)
let 병정 = Math.floor((hp%5)/3)
let 일 = Math.floor((hp%5)%3)/1
return 장군+병정+일;
}
console.log(solution(23))
console.log(solution(24))
console.log(solution(999))
매개변수 hp에 23이 들어 있는 경우, 먼저 변수 장군에서 4가 할당되고, 병동에서 hp를 5로 나눈 나머지를 다시 3으로 나눈 1이 할당됩니다.
그 후의 날에서는, hp%5=3 —–>3%3=0—->0/1=0이므로, 0이 할당된다.
마지막으로 장군 군인의 날 변수 값을 모두 추가하고 반환하면 최소한의 병력을 구성한 수를 얻을 수 있습니다.
function solution(my_string) {
var answer = 0;
let arr = Array.from(my_string)
let number1 = arr.filter((a) => a = Number(a))
let result = 0
for(i= 0; i < number1.length; i++){
result += Number(number1(i))
}
return result ;
}
console.log(solution("aAb1B2cC34oOp"))
console.log(solution("1a2b3c4d123"))
파라미터내의 모든 자연수의 합계를 구할 필요가 있으므로, 우선 파라미터내에서 숫자만을 선택했다.
Array.from 함수를 사용하여 arr에 매개 변수를 배열로 변환한 값을 할당했습니다.
filter 및 Number 함수를 사용하여 arr 배열에있는 숫자 만 선택하고 콜백하여 변수 number1에 할당했습니다.
반복문을 돌리면서 number1의 i번째 색인요소를 다시 Number함수를 사용하여 숫자로 바꾼 후, result에 반복해서 합했다.
function solution(my_string) {
var answer = 0;
let arr = Array.from(my_string)
let number1 = arr.filter((a) => !
isNaN(a))
let result = 0
for(i= 0; i < number1.length; i++){
result += Number(number1(i))
}
return result ;
}
console.log(solution("aAb1B2cC34oOp"))
console.log(solution("1a2b3c4d123"))
따라서!
isNaN을 사용할 수도 있습니다.
function solution(my_string){
let answer = 0
let num = /(^0-9)/g
let cutStr = my_string.replace(num, "") //1234
let arrMy = Array.from(cutStr) //('1', '2', '3', '4')
let mynum = arrMy.map(Number) //(1, 2, 3, 4)
for(i=0; i<mynum.length; i++){
answer += mynum(i)
}
return answer
}
/(^0-9)/g 와 replace 함수를 사용하여 숫자를 제거한 방법이다.
replace 함수는 replace(치환 요소, 치환 요소)가 들어가게 됩니다만, 이 때 치환 요소에 num 가 들어가면서 숫자가 아닌 요소를 지정하게 되어, “”를 통해 숫자가 아닌 요소만 소거된다 같아요.
변수 num과 cutStr에 해당하는 내용은, 2행이 항상 연결된다고 생각하면 된다.
function solution(my_string) {
let arr = Array.from(my_string)
let number1 = arr.filter((a) => !
isNaN(a))
let result = ()
for(i = 0; i < number1.length; i++) {
result.push(Number(number1(i)))
} return result.sort((a,b)=>a-b)
}
console.log(solution("hi12392"))
console.log(solution("p2o4i8gj2"))
console.log(solution("abcde0"))
Array.from 함수로 배열로 바꾸고 filter 함수와 !
isNaN을 활용하여 number1에 숫자만 넣은 배열을 할당해 주었다.
반복 문을 사용하여 number1의 i 번째 인덱스가 Number 함수를 사용하여 숫자 데이터로 result에 저장되도록 push 메서드를 사용했습니다.
그런 다음 궁극적으로 sort 함수를 사용하여 오름차순으로 정렬하여 반환했습니다.
function solution(my_string) {
return my_string.split("").filter((v) => !
isNaN(v)).map((v) => v*1).sort((a,b) => a-b)
}
여기서 주의깊게 봐야 할 것은 map 함수를 사용하여 v*1을 풀어서 수치형 데이터로 콜백이 되는 점이다.