TIL - Spring

배지원·2024년 8월 1일

Sparta

목록 보기
1/5

✍️ Study


😵‍💫 Problem


🎖️ Try

  • 카카오 API를 통해 Oauth 로그인 기능도 추가해봐야겠다.
  • 채팅 관련 기능도 도전해봐야겠다.

💻 Today's Algorithm Code

프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/12947

1. 문제

Harshad(하샤드) 구분하기

  • a,b 2개의 정수값이 있고 a % b를 했을때 나머지가 0일경우 하샤드 수라고 한다.

문제 분석

  1. 정수를 입력받음
  2. 입력받은 수의 자릿값들을 더함(1의자리, 10의자리, 100의자리...)
  3. 입력받은 수를 자릿값들의 합으로 나눔

2. 설계

(1) int로 값을 받아 계산하는 방식

① 입력받은 정수의 자릿수마다 값을 더함

int sumOfDigit = 0;         // 자릿수 합
   while(x>0){
      sumOfDigit += x%10;
      x = x/10;
   }

② 입력받은 수를 자릿값들의 합으로 나누어 하샤드를 판별함

if(num%sumOfDigit == 0){
    return true;
  }

(2) String으로 값을 바꿔 계산하는 방식

① 입력받은 정수를 String으로 자릿수의 값을 한자리씩 구분함

String[] num = String.valueOf(x).split(""); // 입력받은 숫자를 문자열 배열 한자리씩 나눔

② 구분한 값들을 int로 바꿔 더해줌

int sum = 0;
for(String s : num){        // 문자열 배열에 저장된 자릿수의 값들을 한개씩 뽑아 모두 더함
   sum += Integer.parseInt(s);
}

③ 입력받은 수를 자릿값들의 합으로 나누어 하샤드를 판별함

if(x%sum == 0){
   return true;
}

3. CODE

(1) int로 값을 받아 계산하는 방식

public class Harshad {
    // int로 값을 받아 계산하는 방식
    public boolean solution(int x){

        int num = x;
        // 자리수 합
        int sumOfDigit = 0;         // 자릿수 합
        while(x>0){
            sumOfDigit += x%10;
            x = x/10;
        }

        if(num%sumOfDigit == 0){
            return true;
        }

        return false;
    }

    public static void main(String[] args) {
        Harshad hs = new Harshad();
        System.out.println(hs.solution(10));
        System.out.println(hs.solution(11));
    }
}

(2) String으로 값을 바꿔 계산하는 방식

public class Harshad {
    //String으로 값을 받아 계산하는 방식
    public boolean solution2(int x){
        String[] num = String.valueOf(x).split(""); // 입력받은 숫자를 문자열 배열 한자리씩 나눔

        int sum = 0;
        for(String s : num){        // 문자열 배열에 저장된 자릿수의 값들을 한개씩 뽑아 모두 더함
            sum += Integer.parseInt(s);
        }

        if(x%sum == 0){
            return true;
        }

        return false;
    }

    public static void main(String[] args) {
        Harshad hs = new Harshad();
        System.out.println(hs.solution2(10));
        System.out.println(hs.solution2(11));
    }
}
profile
Web Developer

0개의 댓글