풀이법
틀린 코드
import java.util.*;
class Solution {
public boolean solution(int x) {
//각 자리수를 나누어 더하기
//더한 수로 x를 나누기
boolean answer = false;
//각 자리수를 나누어 더한 합
int sum = 0;
//x값 잠시 가져다 쓸 변수
int temp = x;
//자리수를 나누어 저장해 줄 리스트
List<Integer> list = new ArrayList<>();
while(x != 0) {
list.add(temp%10);
temp = temp / 10;
}
for(int i=0; i<list.size(); i++) {
sum += list.get(i);
}
if(x % sum == 0) {
answer = true;
}
return answer;
}
}
메모리 초과가 떴다.
너무 비효율적인 코드인거 같아서 효율적인 방법을 고민해보았다.
불필요한 반복 코드는 줄이고 간단하게 수정했다.
정답 코드
import java.util.*;
class Solution {
public boolean solution(int x) {
//각 자리수를 나누어 더하기
//더한 수로 x를 나누기
//각 자리수를 나누어 더한 합
int sum = 0;
//x값 잠시 가져다 쓸 변수
int temp = x;
while(temp != 0) {
sum += temp % 10;
temp = temp / 10;
}
if(x % sum == 0) {
return true;
}
return false;
}
}
굳이 List에 추가해서 for문을 돌리는건 불필요했다.
간단하게 생각해서 코드를 변경하니 바로 통과되었다.
'알고리즘 > Programmers' 카테고리의 다른 글
[프로그래머스] Java Level 1. 서울에서 김서방 찾기 (0) | 2023.05.25 |
---|---|
[프로그래머스] Java Level 1. 두 정수 사이의 합 (0) | 2023.05.25 |
[프로그래머스] Java Level 1. 정수 제곱근 판별 (0) | 2023.05.25 |
[프로그래머스] Java Level 1. 정수 내림차순으로 배치하기 (0) | 2023.05.25 |
[프로그래머스] Java Level1. 문자열을 정수로 바꾸기 (0) | 2023.05.20 |