inblog logo
|
silver
    알고리즘문제풀기

    [알고리즘문제풀기] 배열 만들기 2

    silver's avatar
    silver
    Oct 15, 2025
    [알고리즘문제풀기] 배열 만들기 2
    Contents
    문제내가 작성한 정답다른 사람들의 정답

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/181921

    내가 작성한 정답

    import java.util.*; class Solution { public int[] solution(int l, int r) { ArrayList<String> answer = new ArrayList<>(); for(int i=l; i<=r; i++){ String s = String.valueOf(i); if(s.matches("[05]+")){ answer.add(s); } } if(answer.isEmpty()) answer.add("-1"); return answer.stream().mapToInt(Integer::parseInt).toArray(); } }

    다른 사람들의 정답

    import java.util.ArrayList; class Solution { public int[] solution(int l, int r) { ArrayList<Integer> list = new ArrayList<>(); // i는 1부터 63까지 반복 // 1~63을 이진수 문자열로 바꾸고, 이 문자열을 다시 정수로 변환해 5를 곱함 for (int i = 1; i < 64; i++) { int num = Integer.parseInt(Integer.toBinaryString(i)) * 5; if (l <= num && num <= r) list.add(num); } // 결과 리스트가 비었으면 -1 반환, 아니면 배열로 변환해 반환 return list.isEmpty() ? new int[] { -1 } : list.stream().mapToInt(i -> i).toArray(); } }
    • 1~63까지 숫자마다 2진수를 십진수로 직접 변환하지 않고 "2진수 문자열" 그대로 숫자로써 읽어 0과 1로 구성된 수(십진수로는 다른 의미지만), 그 숫자에 5를 곱하면 결국 0과 5만 포함하는 수를 생성하는 방식을 이용
    • 반복 범위 64까지 제한한 이유는 64는 충분히 6자리 이진수까지 표현 가능
    Share article

    silver

    RSS·Powered by Inblog