Plo Algorithm
프로그래머스 Lv1 하샤드 수
PLO_98
2022. 3. 16. 17:30
기존 풀이
class Solution {
public boolean solution(int x) {
boolean answer = true;
String typeStr = String.valueOf(x);
String[] strArr = typeStr.split("");
int share = 0;
//파라미터를 나눈 arr의 각 객체를 다른 객체에 넣어줘야함
for (int i = 0 ; i < strArr.length ; i++){
share += Integer.parseInt(strArr[i]);
}
if(x % share == 0){
answer = true;
}else{
answer = false;
}
return answer;
}
}
뜯어보기
public class Solution{
private int sum = 0;
public boolean solution(int num){
sum = 0;
Integer.toString(num).chars().forEach(c -> sum += c - '0');
return num % sum == 0;
}
}
앞의 복습수련을 통해서
이해할 수 있는 코드가 많아졌다.
입력받은 num의 각 자리 수를 더해주기 위해
- Integer.toString(num) -
StringType으로 변환해준후 .chars()로 intstream을 실행했다.
- forEach(c -> sum+= c - '0') -
forEach문을 통해 sum에 값들을 더하면서 할당해준다.
- (c - '0') -
char를 int로 변환하려면 -'0'을 빼버리면 된다.
문자'0'은 ASCII CODE에 48
char '0'을 그대로 int에 할당하게 되면 암시적 유형 캐스트 (자동 형변환)되어
int type ASCII CODE값인 48이 할당된다.
반대로 char - '0'은
int type에 char Type Data가 할당될 때 자동 형변환 되는 부분까지 생각해
미리 -48해준 값을 할당하는 것이다.
이거 진짜 한참 찾았다...