코딩도장

구글 입사문제 중에서

1부터 10,000까지 8이라는 숫자가 총 몇번 나오는가?

8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다.
((注記) 예를들어 8808은 3, 8888은 4로 카운팅 해야 함)

2014年02月14日 01:03

pahkey

(追記) (追記ここまで)
댓글 작성은 로그인이 필요합니다.
여러 알고리즘이 존재할테고, 답도 여러가지인데...구글이 원했던, 혹은 가장 점수를 많이 줬던 정답은 뭘지 매우 궁금?궁금? - 예강효빠, 2017年05月24日 01:30 M D
경우의 수로 풀면 3번의 반복만으로 풀수 있어요 ^^ - 최재학, 2019年08月07日 11:20 M D
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

877개의 풀이가 있습니다. 87 / 88 Page

eight = 0
for i in range(10000):
 a = str(i)
 eight += a.count('8')
print(eight)

2024年02月03日 14:43

리리

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
print(str(list(range(1,10001))).count("8"))

2024年02月21日 16:10

버거킹

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
eight_count=0
for a in range(1,10001):
 number=str(a).count('8')
 eight_count+=number
 number=0
print(eight_count)

2024年02月24日 10:33

박성우

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
def count(num):
 count = 0
 if '8' in str(num):
 for i in str(num):
 if i == '8':
 count += 1
 return count
total = 0
for i in range(1, 10001):
 total += count(i)
print(total)

2024年02月24日 22:19

야옹

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
cuantos_ocho = 0
for i in range(1, 10001):
 str_i = str(i)
 cuantos_ocho += str_i.count('8')
print(cuantos_ocho)
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

```{.java}

```public static void main(String[] args) {

 int max = 10000;
 int addResult = 0;
 int[] intResult = new int[5];
 for (int a = 1; a <= max; a++) {
 String inputString = String.valueOf(a);
 String[] result = inputString.split("");
 for (int i = 0; i <result.length; i++) {
 intResult[i] = Integer.parseInt(result[i]);
 if (intResult[i] == 8) {
 addResult = addResult + 1;
 }
 }
 }
 System.out.println("8 의 수 : " + addResult);

}

댓글 작성은 로그인이 필요합니다.
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int max = 0; String maxInsert = ""; int addResult = 0; System.out.println("찾고자 하는 숫자와 범위를 입력해 주세요."); System.out.print("찾고자 하는 숫자 : "); int find = sc.nextInt(); System.out.print("범위 : "); maxInsert = sc.next(); max = Integer.parseInt(maxInsert); int[] intResult = new int[maxInsert.length()]; for (int a = 1; a <= max; a++) { String inputString = String.valueOf(a); String[] result = inputString.split(""); for (int i = 0; i <result.length; i++) { intResult[i] = Integer.parseInt(result[i]); if (intResult[i] == find) { addResult = addResult + 1; } } } System.out.println(find+" 의 수 : " + addResult); } } - 지현, 2024年04月01日 11:47 M D
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
count = 0
for i in range(1, 10001): 
 count += str(i).count('8')
print(count)

2024年05月30日 18:32

김현빈

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

count = 0
list_num = []
for i in range(0, 10000): # 55
 list_num = list(str(i))
 print(list_num)
 for j in list_num:
 if '8' in j:
 count += 1
print(f"1부터 10,000까지 8이라는 숫자가 총 {count}만큼 나온다.")

2024年08月13日 15:05

먼지

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
eight_num = 0
for n in range(1, 10000+1):
 n_str = str(n)
 eight_num += n_str.count('8')
print(eight_num)
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
# 1개의 8이 있을 경우: 예) XXX8(* X는 8을 제외한 0 ~ 9까지의 숫자가 가능. 결국 9가지 방법이 가능)
# 4개의 자리에 8을 1개 할당하는 경우의 수는 조합으로 구함: C(4, 1) = 4!/1!(4-1)! = 4
# 경우의 수 x 9 x 9 x 9 x 8의 개수: 4 x 9 x 9 x 9 x 1 = 2916
# 2개의 8이 있을 경우: 예) XX88(* X는 8을 제외한 0 ~ 9까지의 숫자가 가능. 결국 9가지 방법이 가능)
# 4개의 자리에 8을 2개 할당하는 경우의 수는 조합으로 구함: C(4, 2) = 4!/2!(4-2)! = 6
# 경우의 수 x 9 x 9 x 8의 개수: 6 x 9 x 9 x 2 = 972
# 3개의 8이 있을 경우: 예) X888(* X는 8을 제외한 0 ~ 9까지의 숫자가 가능. 결국 9가지 방법이 가능)
# 4개의 자리에 8을 3개 할당하는 경우의 수는 조합으로 구함: C(4, 3) = 4!/3!(4-3)! = 4
# 경우의 수 x 9 x 8의 개수: 4 x 9 x 3 = 108
# 4개의 8이 있을 경우: 예) 8888(* X는 8을 제외한 0 ~ 9까지의 숫자가 가능. 결국 9가지 방법이 가능)
# 4개의 자리에 8을 4개 할당하는 경우의 수는 조합으로 구함: C(4, 4) = 4!/4!(4-4)! = 1
# 경우의 수 x 1 x 8의 개수: 1 x 1 x 4 = 4
import math
total = 0
for n in range(1, 5): # n: 8의 개수, 8이 없는 자리수: 4 - n
 cnt = math.comb(4, n)
 sum = cnt * 9**(4-n) * n
 total += sum
print("total = ", total)

2024年10月17日 11:10

rgone6

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

풀이 작성

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

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


언어별 풀이 현황
전 체 x 877
기 타 x 137
python x 457
java x 134
cpp x 59
ruby x 7
javascript x 27
php x 8
cs x 18
lisp x 2
scala x 7
clojure x 1
objectivec x 5
perl x 2
go x 4
haskell x 3
r x 4
matlab x 2
코딩도장 © 2014 · 문의 [email protected]
피드백 · 개인정보취급방침 · RSS

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