본문 바로가기

프로그래머스 코딩(자바)/Level 0

Programmers Level 0 - 7의 개수

728x90

문제 설명

머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.

 
제한사항
  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array의 원소 ≤ 100,000

 

입출력 예
array result
[7, 77, 17] 4
[10, 29] 0

입출력 예 설명

입출력 예 #1

  • [7, 77, 17]에는 7이 4개 있으므로 4를 return 합니다.

입출력 예 #2

  • [10, 29]에는 7이 없으므로 0을 return 합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
    public int solution(int[] array) {
        int answer = 0;
        for(int n : array) {
            while(n>0) {
                if(n%10==7) answer++;
                n/=10;
            }
        }        
        return answer;
    }
}
cs

 

  배열을 반복하며 1자리씩 잘라 7일 경우 개수를 세었다.

  1자리씩 잘라내는 방법은 예전 문제에서 많이 해봤다. 참조하시기 바란다.

 

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Arrays;
import java.util.stream.Collectors;
 
class Solution {
    public int solution(int[] array) {
        return (int) Arrays.stream(Arrays.stream(array)
                                 .mapToObj(v->v+"")
                                 .collect(Collectors.joining())
                                 .split("")
                  ).filter(v->v.equals("7")).count();
    }
}
cs

 

 int 배열을 Stream으로 만들어 String으로 변환하고
 Arrays.stream(array).mapToObj(v->v+"").collect(Collectors.joining())

문자열을 1글자씩 문자열 배열로 만들어 다시 스트림으로 만들고 
 Arrays.stream(  Arrays.stream(array).mapToObj(v->v+"").collect(Collectors.joining()).split("") )

filter()를 이용하여 7인 값만를 구한 후 count()로 개수를 구하고 int로 형변환하였다.
 (int)Arrays.stream(  Arrays.stream(array).mapToObj(v->v+"").collect(Collectors.joining()).split("") )
                  .filter(v->v.equals("7"))
                  .count()

 

728x90