본문 바로가기

JAVA/연습노트

[프로그래머스-자바] k의 개수

조건

1. 손코딩 연습

2. 기존 방식으로 풀어보고

3. 람다로 풀어볼 것

 

문제

 

풀이 과정

 - toCharArray() 메서드가 생각나지 않아서 중간 과정을 채우지 못했다

 

정답

 

1. 기존 풀이 방식

class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        for(int start=i;start<=j;start++) { //i부터 j까지
        	char[] num = Integer.toString(start).toCharArray(); //문자로 변환해서 num에 저장
        	for(int a=0;a<num.length;a++) { //num의 길이만큼 반복
        		if(num[a] == k+'0') { //num[a]가 k+'0'(문자이기 때문에 변환필요)와 같다면
        			answer++; //answer에 1증가
        		}
        	}
        }
        return answer;
    }
}

 

 

2. 람다 풀이 방식

class Num2{
	public int solution(int i, int j, int k) {
		int answer = 0;
		long an = IntStream.rangeClosed(i, j) //범위 지정 i부터 j까지
				.mapToObj(Integer::toString) //정수를 문자열로 변환
				.flatMapToInt(CharSequence::chars) //문자열을 문자로 변환
				.filter(a->a==k+'0') //변환한 값들 중 k+'0'과 일치하는 것 필터
				.count(); //갯수 세기(리턴타입 long)
		answer = (int)an; //answer에 형변환 하여 저장
		return answer;
	}
}