범위 [A, B] 사이의 숫자 중에서
를 "마법의 숫자"로 판단하고, 그 개수를 세는 문제이다.
public static boolean isMagicNum(int i){
int cnt=0;
int n=i;
int[] arr= new int[3];
arr=new int[]{3,6,9};
if(i%3==0){
return true;
}
while(i>0){
int num;
num=i%10;
for(int k=0;k<arr.length;k++){
if(num==arr[k]){return true;}
}
i/=10;
}
return false;
}
new int[3]
→ 즉시 덮어쓰기)||
연산이 더 직관적임public static boolean isMagicNum(int i){
if (i % 3 == 0) return true;
while(i > 0){
int digit = i % 10;
if (digit == 3 || digit == 6 || digit == 9) return true;
i /= 10;
}
return false;
}
항목 | 리팩토링 전 | 리팩토링 후 |
---|---|---|
3,6,9 비교 | 배열 반복 | `digit == 3 |
배열 선언 | arr=new int[3]; + {3,6,9} | 제거 |
조건 순서 | 아래에서 검사 | 조기 리턴 (i % 3 == 0 ) |
변수명 | num | digit (의미 명확) |