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
반응형
'programming > 코테연습' 카테고리의 다른 글
[java] 프로그래머스 콜라츠 추측 - level 1 (0) | 2021.05.16 |
---|---|
[java] 프로그래머스 평균 구하기 - level 1 (0) | 2021.05.16 |
[Java] 프로그래머스 핸드폰 번호 가리기 - level1 (0) | 2021.05.09 |
[Java] 프로그래머스 행렬의 덧셈 - level1 (0) | 2021.05.09 |
[Java] 프로그래머스 x만큼 간격이 있는 n개의 숫자 - level1 (0) | 2021.05.09 |