요즘 코딩도장이란 사이트의 문제를 하나씩 자바로 풀어 보는 중이다.


[문제]

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

+ Recent posts