JAVA #5_2 : 구글 입사 문제; 1~10000 사이에 8의 개수를 구하시오

반응형

구글 입사 문제; 1~10000 사이에 8의 개수를 구하시오.

ex) 8888 -> 8개수 = 4개

코딩도장 풀이 보기에서 발췌한 답안입니다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.stream.IntStream;
 
public class blog{
 
    public static void main(String[] args) {
        System.out.println(String.format(">> %d", foo()));
    }
    
    public static long foo(){
          return IntStream.rangeClosed(110000)
                .map(x -> (int)(String.valueOf(x).chars()
.filter(ch -> ch == '8').count())).sum();
        }
}
cs

 

#5_1에서는 for문을 이용한 반복으로 8의 개수를 도출했다

위의 풀이는 JAVA8에서 지원하는 IntStream을 이용해서 풀이한 코딩이다.

IntStream를 이용해서 이전에 사용하던 for, while, do-while문 보다 짧게 풀이할 수 있다.

 

알게된 것

Intstream.rangeClosed(1,10000) -> 범위를 선언하는 명령문

String.valueOf( ) -> 문자열로 형변환 

map(x -> x*x) -> 뒤에 따라오는 조건문에 맞춰 앞의 변수에 대입

filter(ch -> ch =='8') -> 특정 요소의 컨텐츠를 필터링

count() -> 요소 개수 반환

반응형