정수 l부터 r까지 중 모든 자리 숫자가 0 또는 5로만 이루어진 정수들을 찾기
- 오름차순 배열로 리턴
- 없다면 [-1] 리턴
using System;
public class Solution {
// l 이상 r 이하의 정수 중에서 숫자가 0과 5로만 이루어진 수들을 배열로 반환하는 함수
public int[] solution(int l, int r) {
// 임시 배열: 결과 최대 개수는 (r - l + 1)이므로 그만큼 공간을 확보
int[] temp = new int[r - l + 1];
int count = 0; // 조건을 만족하는 수를 세기 위한 카운터
// l부터 r까지 반복하면서 각 숫자 검사
for (int i = l; i <= r; i++) {
if (IsValid(i)) { // 만약 숫자 i가 0과 5로만 이루어져 있다면
temp[count++] = i; // 임시 배열에 저장하고 count 증가
}
}
// 조건을 만족한 숫자가 하나도 없으면 -1을 담은 배열 반환
if (count == 0) {
return new int[] { -1 };
}
// 조건을 만족한 수만큼 정확한 크기의 배열 생성
int[] answer = new int[count];
for (int i = 0; i < count; i++) {
answer[i] = temp[i]; // temp 배열에서 실제 값들만 복사
}
return answer; // 최종 결과 반환
}
// 해당 숫자가 0과 5로만 이루어졌는지 검사하는 함수
private bool IsValid(int num) {
// 숫자의 각 자리 수를 검사
while (num > 0) {
int digit = num % 10; // 맨 끝 자리 수 추출
if (digit != 0 && digit != 5) return false; // 0이나 5가 아니면 false
num /= 10; // 다음 자리 수로 이동
}
return true; // 모든 자리 수가 0 또는 5일 경우 true
}
}