요즘 코딩도장이란 사이트의 문제를 하나씩 자바로 풀어 보는 중이다.
[문제]
10미만의 자연수에서 3과 5의 배수를 구하면 3,5,6,9이다. 이들의 총합은 23이다.
1000미만의 자연수에서 3,5의 배수의 총합을 구하라.
[해결 방법]
for문을 돌려서 3과 5를 나눈 나머지가 0으로 떨어지는 값을 모두 더한다.
[코드]
[고민]
여기서 끝내면 뭐가 아쉽다...
자바8 Stream 기능을 이용해서 바꿀 수 없을까?
[코드]
위와 같이 자바8 부터 소개된 stream api를 이용하면 한줄로 처리할 수 있다.
간단히 설명하자면
1. IntStream 형식으로 1이상 1000 미만의 range : IntStream.range(1,1000)
2. 3이나 5로 나눈 나머지값이 0인 값만 필터링 : filter(j -> j%3==0 || j%5==0)
3. 더함: sum()
실행순서는 1->2->3 이며 앞의 결과가 뒤의 입력이 되는 파이프 라인 구조이다.
자! 매일 한문제씩 도전해 보자.
'알고리즘 문제' 카테고리의 다른 글
탭 To 공백문자로 바꾸기 (0) | 2018.05.10 |
---|