loading
본문 바로가기
Coding/Programers

[ Programmers ] 배열 만들기 2 ( java ) 32 / 124

by NeuLyeo 2023. 12. 27.

[ Programmers ] 배열 만들기 2 ( java ) 32 / 124

 

프로그래머스

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

programmers.co.kr

 

 

 

 

📚 Table of Contents

     

     

     

     

    문제

    문제 설명

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

     

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

     

     

    제한사항

    • 1 ≤ lr ≤ 1,000,000

     

     

    입출력 예

     

     

     

     

    문제 풀이

    코드 설명

    코드의 목적:

    • 이 코드는 주어진 범위 l부터 r까지의 정수 중 0과 5로만 구성된 숫자들을 찾아 배열로 반환하는 알고리즘을 구현합니다.

     

    코드의 주요 구조:

    1. Import: ArrayList 클래스를 import 합니다.
    2. 클래스 정의: Solution 클래스를 정의합니다.
    3. 메서드 정의: solution 메서드를 정의합니다.

     

    코드의 주요 알고리즘:

    1. 결과 리스트 생성: result 변수를 ArrayList로 생성하여 조건에 맞는 숫자들을 저장할 리스트를 준비합니다.
    2. 범위 내 숫자 순회:
      • l부터 r까지의 모든 숫자를 순회하면서 다음을 수행합니다.
    3. 문자열 변환 및 검사:
      • 현재 숫자 i를 문자열 str로 변환합니다.
      • str.chars().allMatch(c -> c == '0' || c == '5')를 사용하여 str의 모든 문자가 '0' 또는 '5'인지 확인합니다.
    4. 조건에 맞는 숫자 저장:
      • 3번의 조건이 참이면 result 리스트에 i를 추가합니다.
    5. 결과 반환:
      • result 리스트가 비어있으면 -1을 포함한 배열을 반환합니다.
      • 그렇지 않으면 result 리스트를 int 배열로 변환하여 반환합니다.

     

    코드의 핵심:

    • ArrayList를 사용하여 조건에 맞는 숫자들을 저장합니다.
    • String.chars().allMatch() 메서드를 사용하여 문자열의 모든 문자가 특정 조건을 만족하는지 확인합니다.
    • Stream API를 사용하여 ArrayListint 배열로 변환합니다.

     

     

     

    풀이

    import java.util.ArrayList;
    
    class Solution {
        public int[] solution(int l, int r) {
            // 결과 저장할 리스트
            ArrayList<Integer> result = new ArrayList<>();
    
            // 범위 내 숫자 순회
            for (int i = l; i <= r; i++) {
                // 문자열로 변환
                String str = String.valueOf(i);
    
                // 0과 5로만 구성된 숫자인지 확인
                if (str.chars().allMatch(c -> c == '0' || c == '5')) {
                    result.add(i);
                }
            }
    
            // 결과 반환
            return result.isEmpty() ? new int[]{-1} : result.stream().mapToInt(Integer::intValue).toArray();
        }
    }

     

     

     

    import java.util.stream.IntStream;
    import java.util.ArrayList;
    
    class Solution {
        public int[] solution(int l, int r) {
            ArrayList<Integer> list = new ArrayList<>();
    
            IntStream.rangeClosed(l, r)
                .filter(n -> String.valueOf(n).chars().
                       allMatch(c -> c == '0' || c == '5'))
                .forEach(list :: add);
    
            return list.isEmpty() ? new int[]{-1} : 
            list.stream().mapToInt(Integer::intValue).toArray();
        }
    }