(1).백준 16861번 Harshad Numbers는 자릿수의 합으로 해당 숫자가 나눠지는 값을 의미하며

주어진 값보다 크거나 같은 가장 작은 Harshad Number를 찾아야 하는 문제였다.

 

문제 조건 자체가 각 자릿수의 합으로 나누는 것이었기 때문에

for문으로 주어진 input값부터 증가하며 순회하고

내부에서는 String으로 변경한 값을 자릿수마다 더해줬는데

생각해보면 %10으로 나머지처리를 하고 Math.floor(n/10)처리도 괜찮았을 것 같지만

지금 처리한 방식이 오히려 더 처리에 효율적일 수도 있을 것 같고 잘 모르겠다.

 

어쨌거나 더한 자릿수를 현재 값에 %로 나머지를 구한 다음

나머지가 0인 경우 해당 값을 출력하고 break로 중단하는 방식으로 문제를 해결했다.

const input = Number(`987654321`)

for(let i = input ; i <= 1000000000 ; i++){
    let sum = 0
    let str = String(i)
    for(let j = 0 ; j < str.length ; j++){
        sum += Number(str[j])
    }
    if(i % sum == 0){
        console.log(i)
        break
    }
}

'회고' 카테고리의 다른 글

[개발일지] - 227(설날 대체휴일)  (1) 2024.02.12
[개발일지] - 226(설날)  (0) 2024.02.11
[개발일지] - 224(설날)  (0) 2024.02.09
[개발일지] - 223  (0) 2024.02.08
[개발일지] - 222  (0) 2024.02.07

+ Recent posts