0부터 9999까지 8을 포함하지 않는 수는 총 몇개일까?
8, 108, 888, 9998 등은 8을 포함하고 있는 수입니다. 111, 299, 4 등과 같은 수는 8을 포함하지 않는 수 입니다.
Java는 없어서 이렇게 풀어봤습니다. 개선점이 있다면 답글 부탁드립니다.
public class NumberAlgorithm {
private static final int MAX_NUM = 9999;
public static void main(String[] args) {
int resultMinus = 0;
int i = 0;
for (; i <= MAX_NUM; i++) { // 9999까지 Loop
// break시작지점
char[] digit = String.valueOf(i).toCharArray();
for (int j = 0; j < digit.length; j++) { // digit의 자리수 Loop
if (digit[j] == '8') { // 8이 포함된 자리가 있다면 Minus 카운트 후 break
resultMinus++;
break;
}
}
}
System.out.println("[0~9999] 8을 포함하지 않는 결과 ::: " + (i - resultMinus)); // 0부터 9999까지의 숫자 개수 - 8포함된 숫자 개수
}
}
package project1.project;
import java.util.ArrayList;
class calculate {
int usedata;
int appearancenumber;
ArrayList<Integer> datalist = new ArrayList<Integer>();
public calculate(int data) {
this.usedata = data;
}
public void cal() {
for (int n=0; n<usedata; n++) {
String q = String.valueOf(n);
ArrayList<String> s = new ArrayList<>();
for (int r = 0; r<q.length(); r++) {
char aaa = q.charAt(r);
String aa = String.valueOf(aaa);
s.add(aa);
}
if (s.contains("8")) {
int mmm;
} else {
datalist.add(n);
}
}
}
public ArrayList<Integer> returndata() {
return datalist;
}
}
public class project {
public static void main(String[] arg) {
calculate c = new calculate(10000);
c.cal();
ArrayList<Integer> result = c.returndata();
System.out.println(result.size());
}
}
java로 풀었습니다
2022年12月18日 16:20
0부터 세어야 하기 때문에 return에서 'end값에 1을 더한 값'에서 8이 포함된 개수를 빼야 합니다. 매개변수로는 (9999, 8)을 주었고 결과는 6561이 나왔습니다.
public static long count(int end, int target) {
return (end + 1) - IntStream.rangeClosed(0, end).filter(v -> (v + "").contains("" + target)).count();
// return (end + 1) - (int) IntStream.rangeClosed(0, end).filter(v -> String.valueOf(v).contains(String.valueOf(target))).count();
}
2023年01月25日 08:38
풀이 작성