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

Seah Lee·2023년 6월 22일
0

프로그래머스

목록 보기
25/57

import java.util.ArrayList;

class Solution {
    public ArrayList<Integer> solution(int l, int r) {
        
        ArrayList<Integer> answer = new ArrayList<Integer>();
        
        for (int i=l;i<=r;i++){
            String what = Integer.toString(i);
            String yes = "1".repeat(what.length());
            
            StringBuilder sb = new StringBuilder();
            for(int j=0;j<what.length();j++){
                char a = what.charAt(j);
                if(a=='5'||a=='0') sb.append("1");
                else sb.append("0");
            }
            if (sb.toString().equals(yes)) answer.add(i);
        }
        if (answer.size()==0) answer.add(-1);
        return answer;
    }
}

풀긴 했는데 뭔가 되게 아쉽다..?

[아쉬운 점]
1. ArrayList로 변환해서 풀었음
2. StringBuilder 사용

[코드 짜면서 배운 점]
1. ArrayList만 .add 사용가능
2. String끼리는 .equals 사용
3. Array는 .length()로 크기, ArrayList는 .size()로 크기

[다른 사람의 풀이 : 추천 씨게 받은 풀이]

import java.util.ArrayList;

class Solution {
    public int[] solution(int l, int r) {

        ArrayList<Integer> list = new ArrayList<>();

        for (int i = 1; i < 64; i++) {
            int num = Integer.parseInt(Integer.toBinaryString(i)) * 5;
            if (l <= num && num <= r)
                list.add(num);
        }

        return list.isEmpty() ? new int[] { -1 } : list.stream().mapToInt(i -> i).toArray();
    }
}

[챗 지피티씨의 훈수]

import java.util.ArrayList;
import java.util.Collections;

class Solution {
    public int[] solution(int l, int r) {
        ArrayList<Integer> answerList = new ArrayList<Integer>();

        for (int i = l; i <= r; i++) {
            if (isOnlyZeroAndFive(i)) {
                answerList.add(i);
            }
        }

        if (answerList.isEmpty()) {
            return new int[]{-1};
        } else {
            Collections.sort(answerList);
            int[] answerArray = new int[answerList.size()];
            for (int i = 0; i < answerList.size(); i++) {
                answerArray[i] = answerList.get(i);
            }
            return answerArray;
        }
    }

    private boolean isOnlyZeroAndFive(int num) {
        while (num > 0) {
            int digit = num % 10;
            if (digit != 0 && digit != 5) {
                return false;
            }
            num /= 10;
        }
        return true;
    }
}

어렵다 어려워

profile
성장하는 개발자

0개의 댓글