본문 바로가기
내일배움 과제/코딩테스트

알고리즘 21번 - 추가공부

by GREEN나무 2024. 11. 26.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12947

 

JS

문제

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

제한 조건
x는 1 이상, 10000 이하인 정수입니다.


계획

1. 정수를 자리수 마다 배열로 만들고 배열의 합을 구한다.

2. 합한 수로 정수 x를 나누어(%) 나머지가 0이면 true 반환, 아니면 false 반

 


참고, 풀이

히샤드 수 뜻 : 하샤드 수 또는 니번 수는 주어진 진법에서 그 의 각 자릿수 숫자 으로 그 수가 나누어지는 자연수를 말한다. 즉 이말은 하샤드 수의 정의가 자기자신이 각 자리숫자의 합의 몇 배가 되어서 약수 배수의 관계가 되는 수를 일컫는 말이다.


function solution(x) {
  //1. 정수를 자리수 마다 배열로 만들고 배열의 합을 구한다.
  let n = String(x)
    .split("")
    .reduce((acc, cur) => acc + +cur, 0);

  //2. 합한 수로 정수 x를 나누어(%) 나머지가 0이면 true 반환, 아니면 false 반환
  return x % n === 0 ? true : false;
}

코드 간략화하기

function solution(x) {
  return x % String(x).split("").reduce((acc, cur) => acc + +cur, 0) === 0;
}

삼항 연산자 제거하기

   x % n === 0 자체가 Boolean 값을 반환하므로 ? true : false는 불필요

 

 

 


출처 

히샤드 수 : https://ko.wikipedia.org/wiki/%ED%95%98%EC%83%A4%EB%93%9C_%EC%88%98#:~:text=%ED%95%98%EC%83%A4%EB%93%9C%20%EC%88%98%20%EB%98%90%EB%8A%94%20%EB%8B%88%EB%B2%88,%EB%90%98%EB%8A%94%20%EC%88%98%EB%A5%BC%20%EC%9D%BC%EC%BB%AB%EB%8A%94%20%EB%A7%90%EC%9D%B4%EB%8B%A4.

자릿수 더하기 : https://velog.io/@hye_rin/JavaScript-Programmers-Lv.1-%EC%9E%90%EB%A6%BF%EC%88%98-%EB%8D%94%ED%95%98%EA%B8%B0

 

 

 

 


 

◆ C

더보기

◆ C

계획


참고, 풀이


//



코드 간략화하기

 


출처 

 

 

 

 

 

 

◆ C#

더보기

◆ C#

계획


참고, 풀이


//



코드 간략화하기

 


출처 

 

 

 

◆ C++

더보기

◆ C++

계획


참고, 풀이


//



코드 간략화하기

 


출처