하샤드 수

RingKim1·2024년 5월 1일

algorithm

목록 보기
4/18

하샤드 수

주어진 진법에서 그 수의 각 자릿수 숫자의 합으로 그 수가 나누어지는 양의 정수

해결과정

  1. 우선 필요한 과정을 생각해본다
  • 정수 x를 쪼개서 배열로 담아내기 위해 : Sting(num).split("")
  • 나눠진 배열 요소들이 자릿수를 의미하므로 그대로 모두 더해준다 : reduce()
  • 정수 x로 더해진 값을 나눈 나머지를 판별 : if문
  1. 위 과정을 순서대로 적으면
function solution(x) {
    let answer;
    let isHarshad = String(x).split("").reduce((acc,e) => acc + e);
    
    if(x % isHarshad === 0) {
        answer = true;
    } else { answer = false; }
    
    return answer;
}

???

아.. String을 썼기 때문에 문자열 끼리 더해지는구나..
그러면 acc랑, i를 숫자형으로 변환 : Number(str);

acc, e는 내가 지정해서 넣은 파라미터
acc(accumulate) : 누적 값
e(element) : 요소

  1. 오류 해결
function solution(x) {
    let answer;
    let isHarshad = String(x).split("").reduce((acc,e) => Number(acc) + Number(e));
    
    if(x % isHarshad === 0) {
        answer = true;
    } else { answer = false; }
    
    return answer;
}

어제 정리해본 reduce를 바로 써보게 되었다

누구인가? 누가 아직도 for문을 쓰느냐? 2


아쉬운 점?

if문 대신
삼항연산자 condition ? true : false;를 왜 생각 못했을까..

profile
커피는 콜드브루

0개의 댓글