요즘 기분이 꿀꿀해서 CodeJam 2008 Qualification Round 문제 중 하나인, 'Saving the Universe'를 풀어봤습니다.
1번 문제(Saving the Universe)는 다음과 같습니다.
문제링크 : http://code.google.com/codejam/contest/dashboard?c=agxjb2RlamFtLXByb2RyEAsSCGNvbnRlc3RzGI36AQw#
그냥 간단하게 검색엔진 list를 둬서 카운트 하다가 꽉차면 다시 비우고를 반복하면 끝입니다.
파이썬 코드는 다음과 같습니다. (2.5.4버전으로 했음)
실행결과는 다음과 같으며, 둘다 Correct 입니다.
1번 문제(Saving the Universe)는 다음과 같습니다.
문제링크 : http://code.google.com/codejam/contest/dashboard?c=agxjb2RlamFtLXByb2RyEAsSCGNvbnRlc3RzGI36AQw#
그냥 간단하게 검색엔진 list를 둬서 카운트 하다가 꽉차면 다시 비우고를 반복하면 끝입니다.
파이썬 코드는 다음과 같습니다. (2.5.4버전으로 했음)
- import sys
- def isAllChecked(d):
- ret = True
- for k in d.keys():
- if d[k]<1:
- ret = False
- return ret
- if __name__=="__main__":
- if len(sys.argv)>1:
- inp = sys.argv[1]
- else:
- print "append an input file param"
- sys.exit()
- f = open( inp, 'rt' )
- nTC = int( f.readline() )
- print 'the number of tc :', nTC
- output_file = inp.split('.')[0]+"_output.txt"
- fout = open( output_file, 'wt')
- for i in range(0,nTC):
- nEngine = int( f.readline() )
- engines = []
- for e in range(0,nEngine):
- engine = f.readline()
- engines.append( engine )
- nKeyword = int( f.readline() )
- keywords = []
- for k in range(0,nKeyword):
- keyword = f.readline()
- keywords.append( keyword )
- # process
- dEngine = {}
- for e in engines:
- dEngine[e]=0
- nCount = 0
- for k in keywords:
- if k in dEngine.keys():
- dEngine[k] += 1
- if isAllChecked(dEngine):
- for e in engines:
- dEngine[e] = 0
- nCount += 1
- dEngine[k] += 1
- # result
- print 'Case #' + str(i+1)+': '+str( nCount )
- fout.write( 'Case #' + str(i+1)+': '+str( nCount ) + '\n' )
- f.close()
- fout.close()
실행결과는 다음과 같으며, 둘다 Correct 입니다.