Computer/Programming(코딩)

[코딩도장] 코딩과 수학의 상관관계 있다? 없다?

Lewis.yongmin 2015. 7. 13. 01:24

아마 글이 뭔 소린지 모르실꺼에요. 요점은 맨아래...


제목에서 느끼듯이 난 안똑똑... 괜찮아~! 이렇게 배워가는거지~!


오늘 푼 Lv.2 문제(http://codingdojang.com/scode/431)에서 역시 난 느꼈다.


아무리 컴퓨터가 하는 일이라고 코드를 무식하게 짜두면, 내 노트북 CPU만 고생이다...



 * 2나 5로 나눌 수 없는 0 이상 10,000 이하의 정수 n이 주어졌는데, 

 * n의 배수 중에는 10진수로 표기했을 때 모든 자리 숫자가 1인 것이 있다. 

 * 그러한 n의 배수 중에서 가장 작은 것은 몇 자리 수일까?


다시말해, 정수 n이 7이라면 답은 111111이고 6자리 수이다.


코드를 무턱대고 


if(1%7==0)

if(11%7==0)

if(111%7==0)

.

.

.

if(111111%7==0)


이따구로 짜면 내 놋북은 그야말로 주인 잘 못 만난 죄...


이미 난 죄를 저질렀다능.... 하하하하하하하................



사설이 길었다.


다수의 추천을 받은 방법 중 감명 깊었던 한가지 방법을 소개하자면,


답은 모든 자리가 1로 이루어진 수이므로,


1 = 1

11 = 1+10

111 = 1+10+100


이 될 것이고,


1%7 = 1    '나머지들의합 = 1'

10%7 = 3    '나머지들의합 = 4'

100%7 = 2    '나머지들의합 = 6'

1000%7 = 6    '나머지들의합 = 12'

10000%7 = 4    '나머지들의합 = 16'

100000%7 = 5    '나머지들의합 = 21'


여기서, 나머지들의 합이 21인 경우 7로 나누면 나누어 떨어진다.

즉, 1+10+100+1000+10000+100000 = 111111은 7로 나누어 떨어진다는 것이다.


오랜만에 수학공식 증명하는 느낌이 들어서 재밌었던 문제!



IT회사인 Google에는 수학자가 많다고 합니다 ^0^