본문 바로가기

programming/코테연습

[java] 프로그래머스 하샤드 수 - level 1

728x90
반응형

 

package programmers.leve1;

public class 하샤드_수 {

	public boolean solution(int x) {
        boolean answer = false;
        
        int temp=x; // 계속해서 나눠줄 임시 변수
        int sum=0; // 자릿수의 합 변수
        
        while(temp/10!=0)
        {
            sum+=temp%10; // 각자리수 더해줌
            temp=temp/10; // 계속 나눠주기 위해 temp에 값 대입
        }
        
        sum+= temp; // 가장 마지막에 남는 수 더해줌
        
        if(x%sum==0) // sum으로 나눈 값이 0이면 (나누어 떨어지면)
            answer=true;
        
        
        return answer;
        
	}

}

 코딩테스트 연습문제를 풀다보니 느끼는건 변수를 잡는게 진짜 중요하다는거

그리고 문자열로 풀건지, 숫자로 풀건지 결정하는것도 방법인거 같다. 

 

위의 코드는 수식으로 풀었지만, 문자열로 푸는 방법도 연습해봐야겠다. 

 

class Solution {
    public boolean solution(int x) {
        boolean answer = false;
        
        String[] temp=String.valueOf(x).split("");
        
        int sum=0;
        for(String s:temp)
        {
            sum+=Integer.parseInt(s);
        }
        
        if(x%sum==0)
        {
            answer=true;
        }
        
        return answer;
    }
}

 이건 다른 사람의 풀이

split로 하나씩 쪼개서 문자열에 저장해준다음 forEach구문을 사용해서 한글자씩 잘라와서 이걸 다시 정수 변환하여 sum에 더해줬다. 

 

그리고 x를 sum으로 나눈 나머지를 확인해주면 끝

 

나 혼자 머리를 써서 풀어본다고 생각했을때는 문자열을 사용하는게 더 빠를것 같다. 

728x90
반응형