[백준 4673 javascript] 셀프 넘버

레슬코딩·2023년 8월 24일

Javascript 코테준비

목록 보기
8/9

https://www.acmicpc.net/problem/4673

접근
완전 탐색 문제로,0부터 10000까지 반복문을 돌리며 각 수가 셀프넘버가 됐을때 몇인지를 계산하고 배열에 push한다. 그 후 array에 포함되지 않는것들을 출력하면 되겠다.

let array = []
function selfNumber()
{
    let dn;
    for(let i = 0 ;i<10000;i++)
    {
        if(i<10)
        {
            dn = i*2
        }
        else if(i >= 10)
        {
            dn = i + i.toString().split('').map(item=>parseInt(item)).reduce((prev,cur)=>{
                cur = parseInt(prev) + cur
                return cur;
            },0)
        }
        array.push(dn)
    }

}

selfNumber()


for(let i = 1;i<=10000;i++)
{
    if(!array.includes(i))
    {
        console.log(i)
    }

}

dn = i + i.toString().split('').map(item=>parseInt(item)).reduce((prev,cur)=>{
cur = parseInt(prev) + cur
return cur;
},0)

숫자가 두자리 수 이상일때 수를 한 자리 씩 split으로 나눈 후에 reduce로 더해줘 값을 계산해주는 방식을 사용했다.

정리
모든 수를 다 완전탐색하는 방식을 사용하는게 핵심
숫자를 split하여 더하는 로직

완전탐색 방식은 복잡한 로직을 요한다기 보단 문제에서 보이는 그대로 계산해주는게 좋은 방식같아보인다.

profile
프론트엔드 개발자가 되기 위해 노력하는 과정

0개의 댓글