본문 바로가기
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();
}
}