반응형

문제 설명

 

정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 

만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.


제한사항

1 ≤ l ≤ r ≤ 1,000,000


입출력 예

l r result
5 555 [5, 50, 55, 500, 505, 550, 555]
10 20 [-1]

입출력 예 설명

입출력 예 #1

5 이상 555 이하의 0과 5로만 이루어진 정수는 작은 수부터 5, 50, 55, 500, 505, 550, 555가 있습니다. 따라서 [5, 50, 55, 500, 505, 550, 555]를 return 합니다.

 

입출력 예 #2

10 이상 20 이하이면서 0과 5로만 이루어진 정수는 없습니다. 따라서 [-1]을 return 합니다.


문제 풀이

-> 5 ~ 555 까지의 모든 수에서 각 자리에 5 또는 0 이 아닌 수가 있으면 넘기고, 5와 0으로만 이루어진 수라면 배열에 담아서 answer에 넣어주면 된다. 배열에 담을 때, count도 세어주어서 answer 변수를 초기화하는데 사용한다.


코드

import java.util.ArrayList;
class Solution {
    public int[] solution(int l, int r) {
        ArrayList<Integer> answerT = new ArrayList<>();
        
        int count = 0;
        for(int i=l;i<r+1;i++){
            String temp = String.valueOf(i);
            String[] list = temp.split("");
            int test = 1;
            for(int j=0;j<list.length;j++){
                if(!list[j].equals("0")&&!list[j].equals("5")){ // 각 자리가 0 이나 5가 아닌 다른 수를 포함하는지 확인
                    test=0;
                    break;
                } 
            }
            if(test==1){
                count++;
                answerT.add(i);
            }
        }
        
        if(answerT.isEmpty()){ // 배열에 어떠한 값도 존재하지 않으면 -1 을 담은 배열 리턴
            return new int[]{-1};
        } else {
            int[] answer = new int[count];  
            for(int i=0; i<count; i++){
                answer[i] = answerT.get(i);
            }
        return answer;
            
        }
        
    }
}
반응형

+ Recent posts