티스토리 뷰

문제출처

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제

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

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

 

입출력 예

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

 

풀이

숫자 0과 5로만 이루어진 모든 정수를 판별하기 위해서 matches() 함수를 이용해 정규표현식을 사용했습니다.
true인 값들을 ArrayList 배열에 순서대로 저장하고, 만약 그러한 정수가 없으면(ArrayList가 비었을때) -1을 저장합니다.

solution 함수의 return 타입을 ArrayList로 변경 후 return 

 

소스

import java.util.*;
class Solution {
    public ArrayList<Integer> solution(int l, int r) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        
        for(int i=l; i<=r; i++){
            if(Integer.toString(i).matches("[05]+")){
                arrayList.add(i);
            }
        }
        
        if(arrayList.isEmpty()){
            arrayList.add(-1);
        }
     
        return arrayList;
    }
}

풀이2

solution 함수의 리턴타입을 int[] 로 지정했을떄

리스트가 비었을때 return new int[]{-1}; 로 배열을 리턴한다.
int[] 배열을 생성 후 반복문을 통해 array의 값을 int[] 배열에 저장 후 리턴

 

소스

import java.util.*;
class Solution {
    public int[] solution(int l, int r) {
        List<Integer> array = new ArrayList<>();
        
        for(int i=l; i<=r; i++){
            if(Integer.toString(i).matches("[05]+")){
                array.add(i);
            }
        }
        
        if(array.isEmpty()){
            return new int[]{-1};
        }
        
        int[] answer = new int[array.size()];
        for(int j=0; j<array.size(); j++){
            answer[j] = array.get(j);
        }    
        
        return answer;
    }
}