[코딩테스트] 49. 배열 만들기 2

편준민's avatar
May 23, 2025
[코딩테스트] 49. 배열 만들기 2

문제

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

제한사항

• 1 ≤ l ≤ r ≤ 1,000,000

예시

notion image

풀이

해당 문제는 배열의 크기를 확실하게 알 수 없기 때문에, ArrayList를 사용하였다. 처음에는 l부터 r 까지의 모든 수를 for문으로 돌리면서 String.valueOf를 이용하여 모두 String타입으로 변환 시켰다. String타입으로 변환 시켜서 strnum에 넣은 이유는 해당 strnum에 배열을 for문을 사용하여 문자 하나 하나 비교가 쉽기 때문String타입으로 변환했다. 이후 strnumif문을 사용하여 5와 0이 없다면 resultfalse를 담았다. result에 기본 값은 tureif문의 통과하지 못한 값은 모두 ture가 나올 것이다. 이후 resultture인 것만 아까 만든 ArrayList answer에 담았다. 그리고 만약 answer가 비었다면 -1을 넣어서 출력하였다. 처음에 오류가 나서 무엇이 문제이지? 싶었는데 해당 문제에서는 int[]타입을 받고 있는데 나는 ArrayList를 만들어서 ArrayList를 반환했기 때문에 타입이 달라서 계속 에러가 났다. 그래서 ArrayListint[]로 바꾸는 로직도 추가했다.
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); }
notion image
Share article

YunSeolAn