코딩도장

숫자 세기 알고리즘

0부터 9999까지 8을 포함하지 않는 수는 총 몇개일까?

8, 108, 888, 9998 등은 8을 포함하고 있는 수입니다. 111, 299, 4 등과 같은 수는 8을 포함하지 않는 수 입니다.

2022年07月11日 21:15

Tae Joo

(追記) (追記ここまで)
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

3개의 풀이가 있습니다.

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포함된 숫자 개수
 }
}

2022年08月25日 23:35

조용환

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
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로 풀었습니다

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

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();
 }
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

풀이 작성

(注記) 풀이작성 안내
  • 본문에 코드를 삽입할 경우 에디터 우측 상단의 "코드삽입" 버튼을 이용 해 주세요.
  • 마크다운 문법으로 본문을 작성 해 주세요.
  • 풀이를 읽는 사람들을 위하여 풀이에 대한 설명도 부탁드려요. (아이디어나 사용한 알고리즘 또는 참고한 자료등)
  • 작성한 풀이는 다른 사람(빨간띠 이상)에 의해서 내용이 개선될 수 있습니다.
풀이 작성은 로그인이 필요합니다.
목록으로
코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.


언어별 풀이 현황
전 체 x 60
python x 43
기 타 x 12
cpp x 1
java x 3
cs x 1
코딩도장 © 2014 · 문의 [email protected]
피드백 · 개인정보취급방침 · RSS

AltStyle によって変換されたページ (->オリジナル) /