[프로그래머스] 하샤드 수

Mark·2022년 8월 10일
0
post-thumbnail
post-custom-banner

1. 문제 설명

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

2. 제한사항

  • x는 1 이상, 10000 이하인 정수입니다.

3. 입출력 예

arrreturn
10true
12true
11false
13false

4. 문제 접근

1) 자릿수 합 구하기

  • 문자열로 바꿔서 배열 안에 넣기
  • 배열 안에 넣은 원소들을 하나씩 꺼내서 더하기
  • 더한 값을 담은 변수와 2번 진행

2) 구한 합으로 x가 나누어 떨어지는지 확인

3) 1과 2를 만족하면 true, 아니면 false 리턴

5. 문제 풀이에 필요한 개념

1) 형변환

let n = 123

// 숫자 -> 문자
let str = String(n)
let str = (n+"") // string으로 변환시켜줌 

// 문자 -> 숫자
let num = Number(str)
let num = parseInt(str)

2) 문자열 → 배열

  • Array.from(문자열)
  • [문자열].split()

6. 문제 풀이

  • 내 풀이
function solution(arr) {
    let str = String(arr);
    let array = Array.from(str);
    let x = 0;

    for (let i=0; i<array.length; i++) {
        x += parseInt(array[i])
    }
    return arr % x === 0 ? true : false;
}
  • 다른 풀이
function solution(x) {
    var a = 0;
		// x를 문자열로 변환 -> split 함수로 쪼개준다음 배열에 담기 
		// 배열에 담긴 원소들은 Number로 형변환을 시키고 map 함수를 활용해서 새로운 배열로 만듬
    var s = (x+"").split("").map(Number); 

    for(let i of s){
        a += i;
    }

    return x%a == 0 ? true : false;
}

문제 풀기(프로그래머스)

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

profile
개인 공부 정리
post-custom-banner

0개의 댓글