알고리즘

[프로그래머스, 자바] 배열 만들기 2

hminor 2024. 3. 19. 11:20

풀이

  • 해당 접근 방법은 l과 r 사이의 숫자 중 0 또는 5로 나누어 떨어지는 숫자를 찾고
  • 해당 숫자를 String으로 변경 한 다음
  • charAt()으로 해당 인덱스의 문자가 0과 5로 이루어져 있는지 확인 후 아니라면 state 변경과 탈출
  • 이후 state에 따라 값을 result에 추가하고
  • 마지막으로 result가 비어있는지 확인 후 값을 반환하여 해결 

 

import java.util.*;

class Solution {
    public int[] solution(int l, int r) {
        ArrayList<Integer> result = new ArrayList<>();
        for (int i=l; i<=r; i++) {
            if (i%5==0 || i%10==0) {
                String s_num = String.valueOf(i);
                boolean state = true;
                for (int idx=0; idx<s_num.length(); idx++) {
                    char n = s_num.charAt(idx);
                    if (n != '0' && n != '5') {
                        state = false;
                        break;
                    }
                }

                if (state) result.add(i);
            }
        }
        return (result.isEmpty())? new int[] {-1} : result.stream().mapToInt(Integer::intValue).toArray();
    }
}