폴더 내 특정 확장자를 가진 파일 삭제하는 코드입니다.

import os
import glob
			
files = glob.glob("*")
for f in files:
	if os.path.splitext(f)[1] in ['.AAE','.aae']:
		os.remove(f)
		print "file name[" + f + "]"


아이폰 사진을 컴퓨터로 옮기면, .AAE 확장자의 파일이 또 생성됩니다.


AAE 확장자만 삭제하는 코드입니다.



1901년부터 2000년 까지 중에서, 1일이 일요일인 경우가 몇번인지 찾는 문제입니다.

 

 

 

가장 풀기 힘든 문제였습니다.

오일러 프로젝트 엄청 어려웠던 18번 문제입니다.

문제는 위에서 부터 아래로 내려가면서 하나씩 숫자를 더해 가는데,

그 숫자들의 라인 중에서 가장 큰 합이 나오는 경우가 언제인지, 그 합을 구하는 문제입니다.

2차원 배열을 사용해 풀이해야 하는 문제입니다.

 

 

위와같이 2차원 배열을 반복문으로 돌려서 아래에서부터 합의 최대값을 적어가는 방식으로 해결했습니다.


22번 23번 아직 어려워서 못풀고 있습니다 ㅠㅠ

총 24번까지 풀었습니다.!

 

 

제일 어려웠던 문제입니다. 이 문제는 순열과 관련된 알고리즘으로 풀어야 합니다.

예를 들면 ABC를 나열하면

ABC ACB BAC BCA CAB CBA 순으로 나올 수 있습니다.

이렇게 해서, 0부터 9까지를 나열했을때 사전식 순열에서 1,000,000번째는 무엇인지 구하는 문제입니다.

 

지난시간에는 자바로 짜여진 순열 알고리즘을 보고 공부했습니다.

http://gorakgarak.tistory.com/522 

관련 사이트입니다.

 

여기서 사용한 방법은 재귀함수를 통하여 나 자신을 호출하여 트리구조를 순환하는 방식입니다.

재귀함수에 반복문까지 더해져서 코드를 이해하는데에만 3시간이 걸렸습니다.

 

 

먼저 처음단계에서 ABC에서 인덱스 0과 인덱스 0의 자리를 바꾸고

두번째는 인덱스 0과 1, 세번째는 인덱스 0과 2를 바꿉니다.

 

이런식으로 힘들게 짜여진 자바 코드를 파이썬 코드로 변환하는데에도 역시 어려움이 있었습니다.

 

그 와중에 구글링을 통해 파이썬에서 제공하는 함수를 찾았습니다..

 



 

결국 이 코드를 통해 답을 얻었습니다

문제 20. 


n! 이라는 표기법은 n × (n − 1) × ... × 3 × 2 × 1을 뜻합니다.

예를 들자면 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800 이 되는데,
여기서 10!의 각 자리수를 더해 보면 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27 입니다.

100! 의 자리수를 모두 더하면 얼마입니까?





풀이는 주석에 써 둔 것 처럼, for문을 2개 사용하여야 합니다.

처음 반복문은, 100! 의 값을 구하는 반복문입니다. 

반복문을 끝내면, str함수를 이용해 x의 값을 변환합니다. 

또한 len함수로 변환한 값의 길이를 알아냅니다.

두번째 반목문을 통하여 y의 인덱스에 0부터 z까지 접근하면서 

100! 값의 자리마다 더하는 총 sum을 구했습니다. 


https://www.acmicpc.net/1

문제 1000번은 두 수 A와 B를 입력 받은 후,

두 수의 합을 출력하는 것이다.

단순히 A와 B를 받는것이 아니라, 정해진 틀에 맞게 받아야 하는 문제이다.

여기서 가장 어려웠던 것은 숫자 두개를 한 줄로 받고 (4 5) 이 두수를 공백을 기준으로 둘로 나누어 덧셈을 하는 것이었다. 최종 코드는 다음과 같다

import sys
r = lambda: sys.stdin.readline()
a, b = map(int,r().split())
print (a + b)

람다 함수를 써본건 이번이 처음이다.

람다함수란 람다식, 또는 람다 표현식, 익명함수 등으로 알려져있다. 실제로 이름이 없이 정의된다. 이것은 함수와 동일한데, 사용을 하는것은 본인의 취향이다

출력결과는 위와 같다.

 

엄청 간단하다고 생각했던 문제인데..

4번만에 결국 맞췄다.

다음 문제는 좀 더 어려운걸로 풀어봐야 겠다!

 

 


Large sum
 

13번 문제이다.


a = "37107287533902102798797998220837590246510135740250\
46376937677490009712648124896970078050417018260538\
74324986199524741059474233309513058123726617309629\
91942213363574161572522430563301811072406154908250\
23067588207539346171171980310421047513778063246676\
89261670696623633820136378418383684178734361726757\
28112879812849979408065481931592621691275889832738\
44274228917432520321923589422876796487670272189318\
47451445736001306439091167216856844588711603153276\
70386486105843025439939619828917593665686757934951\
62176457141856560629502157223196586755079324193331\
64906352462741904929101432445813822663347944758178\
92575867718337217661963751590579239728245598838407\
58203565325359399008402633568948830189458628227828\
80181199384826282014278194139940567587151170094390\
35398664372827112653829987240784473053190104293586\
86515506006295864861532075273371959191420517255829\
71693888707715466499115593487603532921714970056938\
54370070576826684624621495650076471787294438377604\
53282654108756828443191190634694037855217779295145\
36123272525000296071075082563815656710885258350721\
45876576172410976447339110607218265236877223636045\
17423706905851860660448207621209813287860733969412\
81142660418086830619328460811191061556940512689692\
51934325451728388641918047049293215058642563049483\
62467221648435076201727918039944693004732956340691\
15732444386908125794514089057706229429197107928209\
55037687525678773091862540744969844508330393682126\
18336384825330154686196124348767681297534375946515\
80386287592878490201521685554828717201219257766954\
78182833757993103614740356856449095527097864797581\
16726320100436897842553539920931837441497806860984\
48403098129077791799088218795327364475675590848030\
87086987551392711854517078544161852424320693150332\
59959406895756536782107074926966537676326235447210\
69793950679652694742597709739166693763042633987085\
41052684708299085211399427365734116182760315001271\
65378607361501080857009149939512557028198746004375\
35829035317434717326932123578154982629742552737307\
94953759765105305946966067683156574377167401875275\
88902802571733229619176668713819931811048770190271\
25267680276078003013678680992525463401061632866526\
36270218540497705585629946580636237993140746255962\
24074486908231174977792365466257246923322810917141\
91430288197103288597806669760892938638285025333403\
34413065578016127815921815005561868836468420090470\
23053081172816430487623791969842487255036638784583\
11487696932154902810424020138335124462181441773470\
63783299490636259666498587618221225225512486764533\
67720186971698544312419572409913959008952310058822\
95548255300263520781532296796249481641953868218774\
76085327132285723110424803456124867697064507995236\
37774242535411291684276865538926205024910326572967\
23701913275725675285653248258265463092207058596522\
29798860272258331913126375147341994889534765745501\
18495701454879288984856827726077713721403798879715\
38298203783031473527721580348144513491373226651381\
34829543829199918180278916522431027392251122869539\
40957953066405232632538044100059654939159879593635\
29746152185502371307642255121183693803580388584903\
41698116222072977186158236678424689157993532961922\
62467957194401269043877107275048102390895523597457\
23189706772547915061505504953922979530901129967519\
86188088225875314529584099251203829009407770775672\
11306739708304724483816533873502340845647058077308\
82959174767140363198008187129011875491310547126581\
97623331044818386269515456334926366572897563400500\
42846280183517070527831839425882145521227251250327\
55121603546981200581762165212827652751691296897789\
32238195734329339946437501907836945765883352399886\
75506164965184775180738168837861091527357929701337\
62177842752192623401942399639168044983993173312731\
32924185707147349566916674687634660915035914677504\
99518671430235219628894890102423325116913619626622\
73267460800591547471830798392868535206946944540724\
76841822524674417161514036427982273348055556214818\
97142617910342598647204516893989422179826088076852\
87783646182799346313767754307809363333018982642090\
10848802521674670883215120185883543223812876952786\
71329612474782464538636993009049310363619763878039\
62184073572399794223406235393808339651327408011116\
66627891981488087797941876876144230030984490851411\
60661826293682836764744779239180335110989069790714\
85786944089552990653640447425576083659976645795096\
66024396409905389607120198219976047599490197230297\
64913982680032973156037120041377903785566085089252\
16730939319872750275468906903707539413042652315011\
94809377245048795150954100921645863754710598436791\
78639167021187492431995700641917969777599028300699\
15368713711936614952811305876380278410754449733078\
40789923115535562561142322423255033685442488917353\
44889911501440648020369068063960672322193204149535\
41503128880339536053299340368006977710650566631954\
81234880673210146739058568557934581403627822703280\
82616570773948327592232845941706525094512325230608\
22918802058777319719839450180888072429661980811197\
77158542502016545090413245809786882778948721859617\
72107838435069186155435662884062257473692284509516\
20849603980134001723930671666823555245252804609722\
53503534226472524250874054075591789781264330331690"

sum=0

for i in range(0,100):
    li=a[0+i*50:50+i*50]
    s=int(li)
    sum+=s
print(sum)

[Python]Project Euler_11.Largest product in a grid


11번 문제는 

20×20 격자에서 연속된 네 숫자의 곱 중 최대값


을 구하는 문제이다. 먼저, 문제에 나와있는 숫자를 배열에 입력한다.

arr=[[8,2,22,97,38,15,00,40,00,75,4,5,7,78,52,12,50,77,91,8],
[49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48,4,56,62,00],
[81,49,31,73,55,79,14,29,93,71,40,67,53,88,30,3,49,13,36,65],
[52,70,95,23,4,60,11,42,69,24,68,56,1,32,56,71,37,2,36,91],
[22,31,16,71,51,67,63,89,41,92,36,54,22,40,40,28,66,33,13,80],
[24,47,32,60,99,3,45,2,44,75,33,53,78,36,84,20,35,17,12,50],
[32,98,81,28,64,23,67,10,26,38,40,67,59,54,70,66,18,38,64,70],
[67,26,20,68,2,62,12,20,95,63,94,39,63,8,40,91,66,49,94,21],
[24,55,58,5,66,73,99,26,97,17,78,78,96,83,14,88,34,89,63,72],
[21,36,23,9,75,00,76,44,20,45,35,14,00,61,33,97,34,31,33,95],
[78,17,53,28,22,75,31,67,15,94,3,80,4,62,16,14,9,53,56,92],
[16,39,5,42,96,35,31,47,55,58,88,24,00,17,54,24,36,29,85,57],
[86,56,00,48,35,71,89,7,5,44,44,37,44,60,21,58,51,54,17,58],
[19,80,81,68,5,94,47,69,28,73,92,13,86,52,17,77,4,89,55,40],
[4,52,8,83,97,35,99,16,7,97,57,32,16,26,26,79,33,27,98,66],
[88,36,68,87,57,62,20,72,3,46,33,67,46,55,12,32,63,93,53,69],
[4,42,16,73,38,25,39,11,24,94,72,18,8,46,29,32,40,62,76,36],
[20,69,36,41,72,30,23,88,34,62,99,69,82,67,59,85,74,4,36,16],
[20,73,35,29,78,31,90,1,74,31,49,71,48,86,81,16,23,57,5,54],
[1,70,54,71,83,51,54,69,16,92,33,48,61,43,52,1,89,19,67,48]]

result_set = []
sam = list()

for x in range(0,20):
    for y in range(0,20):
        if x<16:
            sam.append(arr[x][y]*arr[x+1][y]*arr[x+2][y]*arr[x+3][y])

        if y<16:
            sam.append(arr[x][y]*arr[x][y+1]*arr[x][y+2]*arr[x][y+3])

        if x<16 and y<16:
            sam.append(arr[x][y]*arr[x+1][y+1]*arr[x+2][y+2]*arr[x+3][y+3])

        if x>=3 and y<16:
            sam.append(arr[x][y]*arr[x-1][y+1]*arr[x-2][y+2]*arr[x-3][y+3])

    result_set.append(max(sam))
print(max(result_set))




+ Recent posts