문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/181921

제한 사항

입출력 예

풀이
import java.util.ArrayList;
class Solution {
ArrayList<Integer> result = new ArrayList<>();
public int[] solution(int l, int r) {
doDfs(5, l, r);
return result.size() == 0
? new int[] { -1 } : result.stream().sorted().mapToInt(i -> i).toArray();
}
private void doDfs(int num, int l, int r) {
if (num <= r) {
if (num >= l) result.add(num);
doDfs(num * 10, l, r);
doDfs(num * 10 + 5, l, r);
}
}
}
후기
처음에 생각한 풀이는 2진법을 이용하는 것이었다. 어차피 0과 5밖에 안 되니까 이진법 숫자 그대로 int로 바꾼 수에 5를 곱하면 되지 않을까했는데 어떻게 구현해야할지 떠오르지가 않아서 그냥 DFS로 풀었다. 그런데 이렇게 풀고나서 다른 사람 풀이를 보니까 Integer.toBinaryString() 메서드로 2진수 문자열로 바꾸고 그걸 바로 Integer.parseInt() 메서드로 그대로 int로 바꾼 뒤 5를 곱해주는 내가 처음에 생각한 풀이가 있었다... 이렇게 구현하면 되는거였군..ㅎㅎ
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][JAVA][Lv. 0] 특이한 정렬 (0) | 2023.10.05 |
|---|---|
| [프로그래머스][JAVA][Lv. 0] 문자열 밀기 (0) | 2023.10.04 |
| [프로그래머스][JAVA][Lv. 0] 다항식 더하기 (0) | 2023.10.02 |
| [프로그래머스][JAVA][Lv. 2] 코드 처리하기 (0) | 2023.09.30 |
| [프로그래머스][JAVA][Lv. 0] 최빈값 구하기 (0) | 2023.09.28 |