Python/2.7 simple coding(+ c++)

Security Override Programming 9

qkqhxla1 2014. 12. 18. 15:49

랜덤으로 미국식으로 달 일, 년; 형식의 날짜가 3개씩 나온다. 그럼 그 날짜의 해당 요일을


;로 구분지어서 보내면 된다. 처음에는 해당 년도에서의 요일 구하는 알고리즘까지 직접 구현하려고


귀찮아 죽겠는데 관련 정보를 찾아다니던 도중... datetime이라는 모듈의 존재가 떠올랐다!


날짜 관련된 모듈인데 아마도 여기서 잘 찾아보면 해당 년도를 입력하면 요일이 나오는 함수가 있을거라


생각하고 찾아봤더니 있었다. 다른 분의 티스토리인데 정리가 잘 되어있다. 링크


여기서 datetime.isoweekday() 라는게 있는데. 월요일은 1을 반환하고 ...... 일요일은 7을 반환한다.


이것을 잘 이용해서 포맷을 만들어 보내면 된다.


주의점 : 문제에는 답변 포맷을 "Monday; Tuesday; Wednesday" 같은 형식으로 적어놨는데 "를 붙이면


안된다. 즉 답이 월요일,화요일 수요일이면 Monday; Tuesday; Wednesday 를 보내야 한다.


securityoverride_prog_9.py



import urllib2,re,datetime
m = "January February March April May June July August September October November December".split()
d = "Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split()
month = {}; day = {} #month사전에는 각각 달의 영어사전, day사전에는 각각 요일에 대한 사전.
for i in range(len(m)):
    month[m[i]]=i+1
for i in range(len(d)):
    day[i+1]=d[i]

req = urllib2.Request('http://securityoverride.org/challenges/programming/9/index.php')
req.add_header('cookie','PHPSESSID=쿠키')
page = urllib2.urlopen(req).read()
strs = re.findall("<code style='white-space:nowrap'>\s*(.*?)\s*<br />",page)[0].split('; ')
m = []; d = []; y = []
print strs
for i in range(len(strs)):
    m.append( re.findall('([a-zA-Z]+)',strs[i]) ) #달 정보를 넣음.
    d.append( re.findall('\s+([\d]+),',strs[i]) ) #일 정보를 넣음.
    y.append( re.findall(', ([\d]+)',strs[i]) ) #년도 정보를 넣음.
print m; print d; print y
dt = []
for i in range(len(strs)):
    dt.append( day[datetime.datetime(int(y[i][0]),month[m[i][0]],int(d[i][0])).isoweekday()] ) 
    #datetime.datetime객체를 만들어서 위에서 구한 년,월,일을 넣고 그걸 isoweekday()로 요일을 숫자로 반환하게 한 뒤 그것을 사전에 넣어서 영어로된 요일 값을 가져와서 그걸 dt리스트에 추가
answer = urllib2.quote('; '.join(dt)) #사이사이에 ;로 구분지어준다음 url인코딩해줍니다.
print answer
req = urllib2.Request('http://securityoverride.org/challenges/programming/9/index.php','CSRF_TOKEN=%3C%3Fphp+echo+%24_SESSION%5B%27CSRF_TOKEN%27%5D%3B%3F%3E&string='+answer+'&submitbutton=+Time+Has+Expired+')
req.add_header('cookie','PHPSESSID=쿠키')
print urllib2.urlopen(req).read()