프로그래머스 하샤드 수 알고리즘 문제.
https://programmers.co.kr/learn/courses/30/lessons/12947
코딩테스트 연습 - 하샤드 수
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하
programmers.co.kr
문제 설명
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
제한 조건
- x는 1 이상, 10000 이하인 정수입니다.
입출력 예
입출력 예 설명
입출력 예 #1
10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다.
입출력 예 #2
12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다.
입출력 예 #3
11의 모든 자릿수의 합은 2입니다. 11은 2로 나누어 떨어지지 않으므로 11는 하샤드 수가 아닙니다.
입출력 예 #4
13의 모든 자릿수의 합은 4입니다. 13은 4로 나누어 떨어지지 않으므로 13은 하샤드 수가 아닙니다.
< 문제 풀이 >
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.
let x = 10;
// let x = 12;
// let x = 11;
// let x = 13;
solution(x);
function solution(x) {
// 배열로 만들기
// 문자열을 이용해 배열 만들기 -> 배열 안의 문자 숫자로 변경
let arr = (x + '').split('');
arr = arr.map(cur => parseInt(cur));
let sum = 0;
// 배열안의 숫자의 합
for (let index in arr){
sum += arr[index];
}
// 입력값으로 합을 나누기
return !(x%sum) ? true : false
}
반복해서 숫자를 검사하고 싶으므로 반복문을 사용한다. 반복문을 사용하기 위해서 배열로 만들어준다. 배열로 만들어주기 위해서 먼저 1. 문자열로 만들어 줌 2. 문자열을 split으로 각각 나눠 배열로 만들어줌. 이렇게 문자열이 담긴 배열이 되면, map을 사용해 arr 자체를 새로운 arr 로 만들어줄 것인데, parseInt를 사용해 숫자로 바꾼 새로운 배열로 만들어준다. 숫자가 담긴 배열이 완성되면 이제 반복문을 돌리기 시작한다. for in 문을 사용해서 간단히 index 값을 가져와서 arr[index]로 반복 사용하여 배열 안의 숫자의 합을 더해준다. 마지막으로 입력값이었던 x를 sum(배열 안의 숫자합)으로 나누어 나누어 떨어진다면 true, 아니라면 false 를 출력해준다.
다른 사람들은 어떻게 풀었을까?
https://programmers.co.kr/learn/courses/30/lessons/12947/solution_groups?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithm' 카테고리의 다른 글
[알고리즘] #25 정수 제곱근 판별 | 프로그래머스 (0) | 2022.01.20 |
---|---|
[알고리즘] #26 제일 작은 수 제거하기 | 프로그래머스 (0) | 2022.01.20 |
[알고리즘] #27 콜라츠 추측 | 프로그래머스 (0) | 2022.01.20 |
[알고리즘] #21 이상한 문자 만들기 | 프로그래머스 | 테스트 실패 원인 (공백) (0) | 2022.01.19 |
[알고리즘] #22 자릿수 더하기 | 프로그래머스 (0) | 2022.01.19 |