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;
}
}
어렵다 어려워