Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- react
- pccp
- 프로그래밍
- 밥줄지키기프로젝트
- 밀러컬럼
- 프로그래머스
- Next
- 코딩
- 30대까지이루기
- 2026
- javascript
- 파킨슨병
- 타입스크립트
- 웹개발
- frontend
- AI에게서 살아남기
- #유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #next.js #프론트엔드개발자양성과정 #개발자교육과정
- 개발
- 내밥줄지켜
- 자바스크립트
- js
- 블레이버스
- 신입
- 새복많
- 코딩테스트
- 회사
- Web
- 개발자
- 프론트엔드
- 백엔드
Archives
- Today
- Total
낭 만 당
프로그래머스 Lv 1 - 하샤드 수 (JavaScript) 본문
문제 설명
자연수 x가 하샤드 수인지 판단하는 문제입니다. 하샤드 수란, 자신의 자릿수의 합으로 나누어 떨어지는 수를 의미합니다.
예를 들어, 18의 자릿수 합은 1 + 8 = 9이고, 18 % 9 == 0이므로 하샤드 수입니다.
입력 조건
- x는 1 이상 10,000 이하의 자연수
출력 조건
- x가 하샤드 수이면 true, 아니면 false를 반환
문제 접근
- 숫자 x를 문자열로 변환해 각 자릿수로 나눈다.
- 자릿수 하나하나를 정수형으로 변환하여 모두 더한다.
- 원래 수 x가 자릿수 합으로 나누어 떨어지는지 확인한다.
function solution(x) {
var answer = true;
var num = 0;
x = x.toString();
for (let i of x) {
num += Number(i);
}
if (x % num != 0) {
answer = false;
}
return answer;
}

코드 개선
이렇게 푼 것이 처음에 작성한 코드이다.
좀 더 고민하면서, 함수형 스타일로 코드를 개선했다.
1. split('')을 통해 문자열을 문자 배열로 분리
2. reduce()를 통해 자릿수 합을 계산
3. 나머지 연산으로 하샤드 수 여부 판단
function solution(x) {
const sum = x.toString()
.split('')
.reduce((acc, cur) => acc + Number(cur), 0);
return x % sum === 0;
}
느낀 점
1. 문자열 변환을 활용하면 자릿수 접근이 용이하다.
2. 간단한 조건 판단으로 문제를 해결할 수 있으며, 계산량이 매우 작아 시간복잡도 측면에서도 효율적이다.
3. 초보 단계인 나에게 코딩테스트 연습 초반 단계에서 연습하기 적절한 문제였고, 문자열-숫자 간 형 변환 및 반복문, 조건문 사용 능력을 점검할 수 있었다.
'Programming Record' 카테고리의 다른 글
| Nest.js로 가는 길에 Express.js 먼저 맛보기 (3) | 2025.07.19 |
|---|---|
| 프로그래머스 Lv1 수박수박수~ 문제 풀기와 코드의 변화 (1) | 2025.07.16 |
| 웹 성능 최적화 기법: chapter3 웹 사이트 성능을 개선하는 기본적인 방법 (1) | 2024.11.30 |
| 프로그래머스 Lv:0 최빈값 구하기 (4) | 2024.11.26 |
| 웹 성능 최적화 기법: chapter2 웹 최적화 (7) | 2024.11.26 |