본문 바로가기
C#/프로그래머스

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

by ian's coding 2025. 4. 21.
728x90
반응형

💻 프로그래머스 코딩 테스트 – 하샤드 수

🧩 문제 설명

양의 정수 x가 하샤드 수인지 판단하는 문제입니다.

하샤드 수란 어떤 수가 자신의 자릿수의 합으로 나누어 떨어지는 수를 의미합니다.

예를 들어, 18은 각 자릿수의 합이 1 + 8 = 9이고, 18은 9로 나누어떨어지므로 하샤드 수입니다.

✔️ 제한 사항

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

🧠 문제 풀이 접근

  1. 숫자 x를 문자열로 변환하여 자릿수마다 분리합니다.
  2. 각 자릿수를 정수로 변환하여 합을 구합니다.
  3. 원래의 수 x가 자릿수의 합으로 나누어떨어지는지 확인합니다.
  4. 나누어떨어지면 true, 아니면 false를 반환합니다.

🧾 코드 설명 (C#)

using System;
using System.Linq;

public class Solution {
    public bool solution(int x) {
        // 정수를 문자 배열로 변환 (예: 123 -> ['1','2','3'])
        char[] c = x.ToString().ToCharArray();
        
        // 각 문자를 정수로 변환 후 합산
        int sum = c.Sum(i => int.Parse(i.ToString()));
        
        // x가 자릿수의 합(sum)으로 나누어떨어지는지 확인
        return x % sum == 0 ? true : false;
    }
}

🔍 코드 상세 분석

  • x.ToString().ToCharArray()
    → 정수 x를 문자열로 변환한 후 각 문자를 문자 배열로 분해합니다.
  • c.Sum(i => int.Parse(i.ToString()))
    → 문자 하나하나를 다시 정수로 변환한 후 Sum()으로 전체 자릿수의 합을 구합니다.
  • return x % sum == 0 ? true : false;
    → 하샤드 수의 조건대로 x가 자릿수 합으로 나누어떨어지는지 확인 후 결과 반환.

✅ 최종 결과

이 코드는 하샤드 수 여부를 정확하게 판단해줍니다. LINQ를 활용해서 코드가 간결하면서도 가독성이 좋습니다.

 

 

 

 

 

728x90
반응형

댓글