코딩도장

구글 입사문제 중에서

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
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

457개의 풀이가 있습니다. 1 / 46 Page

파이썬 2.7 입니다.

print str(range(1,10001)).count('8')
댓글 작성은 로그인이 필요합니다.
죄송한데 파이썬 초보라 이해가 잘 안됩니다. 위의 코드를 넣고 돌려봤는데(print에 괄호 넣고) 0 이 나오더라구요(python 3.3). 제가 뭔가 잘못한걸까요? str(range(1,10001)) 넣으면 '1234567891011....'이 나오나요? - 에밀로, 2014年02月19日 05:18 M D
파이썬 2.7.6 잘 됩니다. 파이썬 2.7.6에서 str(range(1,10001))하시면 "[1,2,3,...,10000]" 됩니다 - Lee SunYeop, 2014年02月19日 05:24 M D
답변 감사합니다. 그럼 버전의 문제인듯한데, 3.3버전에서 str(range(1,10001))을 하려면 어떻게 해야할까요? - 에밀로, 2014年02月19日 05:35 M D
+8 답을 찾았습니다. print(str(list(range(1,10001))).count('8')) 로 하면 되는군요. - 에밀로, 2014年02月19日 09:20 M D
오 저는 숫자 하나 하나의 '8'의 갯수를 찾고 그 것의 갯수를 더하는 방법을 택했는데, list에 넣고 한번에 세는 것이 더 간단하고 좋은 것 같네요~ 간결하고 멋져요!! - lkungs, 2016年08月16日 17:41 M D
멋진 발상의 전환입니다. - Kim J.S., 2016年10月29日 18:36 M D
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

파이썬 3.5로 풀었습니다.

print(str(list(range(1, 10001))).count('8'))

2016年11月22日 01:24

Analyticsstory

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

Python(2.7.9)으로 작성하였습니다.
결과는 4,000으로 확인되었습니다.

2015年11月18日 16:59

如 月華

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

int 값을 String으로 변환하여 8을 찾아야겠다고 생각했는데, 길가의풀님도 그렇게 하셨네요! 파이썬 초보인데 길가의풀님 코드의 count('8')을 보고 저도 적용해보았습니다. 뭔가 find() 메소드가 있을거라 생각했었습니다 ^^;

>>> str(list(range(1,10001))).count('8')
댓글 작성은 로그인이 필요합니다.
str과 list의 순서가 바뀌어야 하지 않을까요? - 최정진, 2016年12月23日 10:15 M D
순서보다는 range(1,10001) 가 list type 이라서 안써도 되네요. >>> str(range(1,10001)).count('8') Counter 써서 해봤습니다. from collections import Counter Counter(str(range(1,10001)))['8'] - 전 수현, 2016年12月26日 22:08 M D
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
print(sum([str(num1).count('8') for num1 in range(1,10000)]))

2018年09月01日 15:14

오왕씨

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

2019年04月05日 15:09

비밀

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

2019年06月17日 16:44

Hwaseong Nam

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

2020年02月06日 16:03

김희준

댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.
# List comprehension 이용 
nums = [int(a) for x in range(1,10001) for a in str(x)]
count = sum(1 for n in nums if n == 8)
print(count)
댓글 작성은 로그인이 필요합니다.
(注記) 상대에게 상처를 주기보다 서로에게 도움이 될 수 있는 댓글을 달아 주세요.

Python 으론 이렇게 단순한데요. 근데 이렇게 간단한 답을 원하는게 아니라 어떻게 풀어야 하는지 방식을 설명해야 될것 같습니다.

list=""
for i in range(1,10000): list = list + str(i)
print list.count('8') 

2014年02月19日 00:57

Kim Daniel

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

풀이 작성

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

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(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 によって変換されたページ (->オリジナル) /