-
728x90
- 효율성은 떨어져도 stream을 이용해서 풀어보고자 하였다.
import java.util.Arrays; class Solution { public boolean solution(int x) { int n = Arrays.stream(Integer.toString(x).chars().boxed().mapToInt(i -> i -'0').toArray()).sum(); return x % n == 0 ? true : false; } }
그런데 굳이
숫자 -> 문자열 -> char배열 -> int배열 -> int배열의 총 합 을 구하게 하다보니 시간이 매우 오래걸린다.
class Solution { static int sum = 0; public boolean solution(int x) { Integer.toString(x).chars().forEach(c -> sum += c - '0'); return x % sum == 0 ? true : false; } }
숫자 -> 문자열 -> char배열 -> 배열의 총 합 을 구하게 하니까 시간이 좀 더 줄었다.
stream이 낯설어서 계속 써보려고 하는데,
stream이 코드는 단순하지만, 타입이나 형태기 굳이 변환이 필요 없을땐 for문을 쓰는게 시간은 훨씬 절약되는것 같다.!!
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[level1] 프로그래머스 - 행렬의 덧셈(JAVA) (0) 2021.08.31 [level1] 프로그래머스 - 핸드폰 번호 가리기(JAVA) (0) 2021.08.31 [level1] 프로그래머스 - 평균 구하기(JAVA) (0) 2021.08.31 [level1] 프로그래머스 - 콜라츠 추측(JAVA) (0) 2021.08.31 [level1] 프로그래머스 - 최대공약수와 최소공배수(JAVA) (0) 2021.08.31 댓글