나랑 매일 코딩해

--24일차--



안녕하세요 #100DaysOfCode 챌린지를 하려고 합니다. 매일 나는 leetcode 또는hackerrank에서 1개의 문제를 해결하려고 노력할 것입니다. 끝까지 저와 함께 하시길 바랍니다.
이제 오늘 문제를 해결해 보겠습니다.
  • 문제: 해피 넘버
  • 세부 정보: here
  • 아이디어: 각 단계 후에 숫자를 분할하고 새 숫자를 배열에 저장하여 숫자가 순환에서 끝없이 반복되는지 확인하려면 배열에 두 번 나타나는 숫자가 있는지 확인해야 합니다.
  • 예: 2
  • 1단계: 2^2 = 4; 배열 = [4];
  • 2단계: 4^2 = 16; 배열 = [4,16];
  • 3단계: 1^2 + 6^2 = 37; 배열 = [4,16,37];
  • 4단계: 3^2 + 7^2 = 58; 배열 = [4,16,37,58];
  • 5단계: 5^2 + 8^2 = 89; 배열 = [4,16,37,58,89];
  • 6단계: 8^2 + 9^2 = 145; 배열 = [4,16,37,58,89,145];
  • 7단계: 1^2 + 4^2 + 5^2 = 42; 배열 = [4,16,37,58,89,145,42];
  • 8단계: 4^2 + 2^2 = 20; 배열 = [4,16,37,58,89,145,42,20];
  • 9단계: 2^2 + 0^2 = 4; 배열 = [4,...,4];
  • 숫자 4가 두 번 나타나므로 false를 반환합니다.

  • 내 솔루션(자바스크립트):

  • var Sum=(n)=>{
        let tmp=0;
        while(n>0){
            tmp=tmp+(n%10)**2;
            n=parseInt(n/10);
        }
        return tmp;
    }
    var isHappy = function(n) {
        let ans=[],i=1;
        ans[0]=n;
        while(i){
            let nums = Sum(ans[i-1]);
            if(nums==1) return true;
            else if(ans.includes(nums)) return false;
            ans.push(nums);
            i++;
        }
    };
    


    -->더 나은 솔루션이나 질문이 있으면 아래에 의견을 말하십시오. 나는 감사 할 것입니다.

    좋은 웹페이지 즐겨찾기