글
http://news.zum.com/articles/2829610
구글 입사 문제중에 1에서 10000까지 8이 몇개 나오는지 세보라는 문제가 있다고 한다.
나의 해법.
a=0
for i in range(10000):
n=i+1
while(n>0):
a+=int(((n+2)%10)==0)
n/=10
print(a)
몇자 더 줄인 버전.
a=0
i=10000
while(i>0):
while(n>0):
a+=int((n%10)==8)
n/=10
i-=1
print(a)
증명.
1. (n%10)은 n을 10으로 나눈 나머지이다.
2. (n%10)이 8인 경우 (n%10)==8은 True이다.
3. (n%10)이 8이 아닌 경우 (n%10)==8은 False이다.
4. Python에서 int(True)는 1이다.
5. Python에서 int(False)는 0이다.
6. a+=x는 a에 a+x를 대응시킨다.
7. 1~6에 의해, a+=int((n%10)==8)이 실행되면, n의 1의 자리에 있는 수가 8이면 a는 1만큼 커지고, 8이 아니면 변하지 않는다.
8. n/=10은 n에 n을10으로 나눈 몫을 대응시킨다. 이때, n과 10이 모두 int형이면 나머지는 버려진다.
9. while(n>0)은 n이 0보다 커야 수행되고 0이거나 0보다 작으면 수행되지 않는다.
10. 가장 마지막으로 수행되는 경우는 n이 한자리 수이고, 이후에 n/=10을 수행하면 n=0이 되어 있다.
11. 따라서 while(n>0)구문이 수행되고 나면 a는 n에 있는 8의 수만큼 증가한다.
12. 따라서 while(i>0)구문이 수행되면 1부터 10000사이에 있는 각 정수들이 가지고 있는 8의 수를 셀 수 있다.
글
TIFF-CSV 변환기. Python 2.7에서 작성되었고 ImageMagick과 wxPython이 필요하다.
# -*- coding: utf-8 -*-
# This program converts 16-bit TIFF files from XCAP of EPIX CCD to .csv and .png.
# This program depends on ImageMagick and wxPython.
# Please make sure 'convert' command is possible at the program path.
# Copyright 2012, Kee Hwan Nam, APRI, GIST.
# This program can be used under Gnu Public Licence version 3.
# Refer to http://www.gnu.org/copyleft/gpl.html
import wx
import os
import csv
import sys
reload(sys)
sys.setdefaultencoding('cp949')
def convertfilter(p):
a = csv.reader(open(p.replace("\\\\","\\"), 'r'), delimiter=',')
pp = p[:-3] + "csv"
ppp=open(pp, 'w')
index = 1
flag = 0
for i in a:
if flag == 0:
d=int(i[0].split(":")[1])
flag+=1
else:
ppp.write(i[2])
if index%d==0:
ppp.write("\n")
else:
ppp.write(",")
index+=1
def converting(a, dirn,filen):
for filens in filen:
#~ print(filens)
print(filens[-3:].lower())
if filens[-3:].lower()=="tif":
filename = dirn+"\\"+filens
print(("convert \"" + filename + "\" \"" + filename + ".txt\""))
os.system("convert \"" + filename + "\" \"" + filename + ".txt\"")
os.system("convert \"" + filename + "\" \"" + filename + ".png\"")
convertfilter(filename + ".txt")
os.system("del \"" + filename + ".txt\"")
class mainframe(wx.Frame):
def __init__(self, *args, **kwds):
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
dig = wx.DirDialog(None, message="Choose data files", style = wx.FD_MULTIPLE)
if dig.ShowModal() == wx.ID_OK:
pp = dig.GetPath()
else:
exit()
os.path.walk(dig.GetPath(), converting, 0)
class TIFFconv(wx.App):
def OnInit(self):
wx.InitAllImageHandlers()
main = mainframe(None, -1, "")
self.SetTopWindow(main)
main.Show(True)
main.Show(False)
exit()
return 1
if __name__ == "__main__":
TIFFconv = TIFFconv(0)
TIFFconv.MainLoop()
글
토익 접수하다보니 이메일 선택창이 나왔다. 위의 주소 중 몇개나 살아있는지 보자.
hanmail.net - 한국의 이메일 중 대명사지만, 스팸메일이 너무 많아서 차단당하는 비율이 많았다.
freechal.com - 이 글 쓰려고 10년만에 접속해봤다. 아직 사용할 수 있더라. 30MB의 대용량을 제공한다. 헐.
hananet.net - 없어졌다.
hanmir.com - 없어졌다. 파란이랑 합쳤었던 것 같은데, 그 파란이 없어졌으니 이것도 없어진 셈이다.
hotmail.com - MS의 이메일 서비스인데 이제 곧 없어진다.
korea.com - 아직 서비스중이다. 도메인 값만 비싸고 그닥 인기는 없는 듯 싶다.
lycos.co.kr - 네이트와 합병된 것 같다. 도메인이 살아있긴 한듯.
nate.com - 한국의 대표 이메일 서비스가 되었다. 그러나 해킹을 당했으니...
naver.com - 역시 한국의 대표 이메일 서비스 중 하나이다.
netian.com - SMS전문 사이트로 거듭났지만 이메일은 살아있다. 하지만 아무래도 카톡때문에 곧 망할 것 같다.
yahoo.co.kr - 아직 살아있다. 후후. -2013년부터는 한국에서 영업 안한댄다.
orgio.net - 없어졌다.
paran.com - 없어졌다.
이정도면 nate와 naver를 제외하면 나머지는 거의 다 사라졌다고 해도 과언이 아니라고 생각한다.
그냥 직접입력 하나만 둬도 괜찮을 것 같은데 왜 아직 안고치고 있는 것일까.
RECENT COMMENT