문제
정수
l
과 r
이 주어졌을 때, l
이상 r
이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.
제한사항
• 1 ≤
l
≤ r
≤ 1,000,000예시

풀이
해당 문제는 배열의 크기를 확실하게 알 수 없기 때문에,
ArrayList
를 사용하였다.
처음에는 l
부터 r
까지의 모든 수를 for
문으로 돌리면서 String.valueOf
를 이용하여 모두 String
타입으로 변환 시켰다. String
타입으로 변환 시켜서 strnum
에 넣은 이유는 해당 strnum
에 배열을 for
문을 사용하여 문자 하나 하나 비교가 쉽기 때문에 String
타입으로 변환했다.
이후 strnum
을 if
문을 사용하여 5와 0이 없다면 result
에 false
를 담았다. result
에 기본 값은 ture
로 if
문의 통과하지 못한 값은 모두 ture
가 나올 것이다.
이후 result
가 ture
인 것만 아까 만든 ArrayList answer
에 담았다. 그리고 만약 answer
가 비었다면 -1
을 넣어서 출력하였다.
처음에 오류가 나서 무엇이 문제이지? 싶었는데 해당 문제에서는 int[]
타입을 받고 있는데 나는 ArrayList
를 만들어서 ArrayList
를 반환했기 때문에 타입이 달라서 계속 에러가 났다.
그래서 ArrayList
를 int[]
로 바꾸는 로직도 추가했다. int l = 5;
int r = 555;
ArrayList<Integer> answer = new ArrayList<>();
int num = 0;
for (int i = l; i <= r; i++) {
num = i;
String strnum = String.valueOf(num);
boolean result = true;
for (char str : strnum.toCharArray()) {
if (str != '5' && str != '0') {
result = false;
}
}
if (result) {
answer.add(num);
}
}
if (answer.isEmpty()) {
answer.add(-1);
}
int[] answerArr = new int[answer.size()];
for (int i = 0; i < answer.size(); i++) {
answerArr[i] = answer.get(i);
}

Share article