본문 바로가기
코딩테스트 연습

배열 만들기 2

by 신재은👩🏼‍💻 2024. 4. 18.

문제 설명
정수 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]


import java.util.ArrayList;

class Solution {
    public int[] solution(int l, int r) {
        ArrayList<Integer> arrList = new ArrayList<Integer>();
        
        for(int i=l; i<=r; i++) {
            if(String.valueOf(i).matches("^[05]+$")) {
                arrList.add(i);
            }
        }
               
        if(arrList.isEmpty()) {
            arrList.add(-1);
        }       
               
        int[] answer = arrList.stream().mapToInt(Integer::intValue).toArray();       
               
        return answer;
    }
}


정규표현식 생각이 안 나서 gpt 도움을 빌렸다.

다른 사람들 푼 거 봤는데 역시 내 코드(?)가 제일 좋은 것 같다.

 

이 코드가 좋다고 생각하는 이유

 

1. 정규표현식으로 확실하고 직관적이게 풀었다.

l부터 r 사이 수 중 처음부터 끝까지 각 자리 수에 0 또는 5만 들어가는 수만 딱 뽑는다.

이진법 뭐 그런 걸로 우회 안 한다.

 

2. 코드가 쉽다. 

 

난 진짜 코드는 쉬운 게 장땡이라 생각하는 사람이다.

그래야 같이 일하는 사람이 덜 머리 쓰고 실수도 덜 한다.

쉬운 코드가 절대 수준 낮은 코드가 아니다.

'코딩테스트 연습' 카테고리의 다른 글

간단한 논리 연산  (0) 2024.04.18
배열 만들기 4  (0) 2024.04.18
수열과 구간 쿼리 4  (0) 2024.04.18
수열과 구간 쿼리 2  (0) 2024.04.17
수열과 구간 쿼리 3  (0) 2024.04.17