콘텐츠로 건너뛰기
Home » 파이썬 » Page 6

파이썬

오일러 프로젝트 18

다음과 같이 삼각형 모양으로 수를 배열했습니다.

3
7 4
2 4 6
8 5 9 3

삼각형의 꼭대기부터 아래쪽으로 인접한 수를 찾아 내려가면서 합을 구하면, 위의 그림처럼 3 + 7 + 4 + 9 = 23이 가장 큰 합을 갖는 경로가 됩니다.

다음 삼각형에서 합이 최대가 되는 경로를 찾아서 그 합을 구하세요.

75
95 64
17 47 82
18 35 87 10
20 04 82 47 65
19 01 23 75 03 34
88 02 77 73 07 63 67
99 65 04 28 06 16 70 92
41 41 26 56 83 40 80 70 33
41 48 72 33 47 32 37 16 94 29
53 71 44 65 25 43 91 52 97 51 14
70 11 33 28 77 73 17 78 39 68 17 57
91 71 52 38 17 14 91 43 58 50 27 29 48
63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23

참고: 여기서는 경로가 16,384개 밖에 안되기 때문에 모든 경로의 합을 일일이 계산해서 답을 구하는 것이 가능합니다. 하지만 67번 문제에는 100층자리 삼각형 배열이 나옵니다. 그런 경우에는 좀 더 현명한 풀이 방법을 찾아야겠지요.

https://euler.synap.co.kr/problem=18
더 보기 »오일러 프로젝트 18

루카스-레머테스트

메르센소수 어느날 지식인에 메르센 소수를 판별하는 파이썬 프로그램이 필요하다는 질문이 올라왔다. 질문자는 대학생인걸까? 루카스-레머 테스트는 메르센소수(소수 p에 대하여 도 소수인 경우)를 판별하는 알고리듬이다. 참고 : https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test 아래코드는 해당 알고리듬을 파이썬으로 구현한 것이다. 소수 p를 받아서 메르센소수인지를 검사한다.

파이썬 내장함수 일람 – Python 3.6.2 기준

파이썬 내장함수와 관련하여 간단하게 분류별로 나누고 정리해 보았다. 보다 자세한 사용법에 대해서는 파이썬 표준라이브러리 문서나 대화형쉘에서 help()를 이용해서 도움말을 얻도록 하자. 이 내장함수들은 하나 이상의 타입의 인자를 받을 수도 있고, 별도의 옵션 인자를 받기도 한다. 예를 들어 max() 함수는 max(a, b, c)와 같이 쓸 수도 있지만, max(aList)와 같이 연속열 1개를 인자로 받기도 하며, key= 파라미터를 줄 수도 있다. 본 글에서는 이런 세부 내용에 대해서는 따로 언급하지 않는다.
그외에 객체/모듈 조사 명령을 사용하여 내장 함수 목록을 뽑아내는 방법이 있는데, 이 부분은 글의 말미에서 추가로 소개하겠다. 더 보기 »파이썬 내장함수 일람 – Python 3.6.2 기준

오일러 프로젝트 12

1부터 n까지의 자연수를 차례로 더하여 구해진 값을 삼각수라고 합니다.  예를 들어 7번째 삼각수는 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28이 됩니다. 이런 식으로 삼각수를 구해 나가면 다음과 같습니다.
 

 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

이 삼각수들의 약수를 구해봅시다.
 

 1: 1
 3: 1, 3
 6: 1, 2, 3, 6
10: 1, 2, 5, 10
15: 1, 3, 5, 15
21: 1, 3, 7, 21
28: 1, 2, 4, 7, 14, 28

위에서 보듯이, 5개 이상의 약수를 갖는 첫번째 삼각수는 28입니다. 그러면 500개 이상의 약수를 갖는 가장 작은 삼각수는 얼마입니까

http://euler.synap.co.kr/prob_detail.php?id=12

더 보기 »오일러 프로젝트 12

instapush로 메시지 푸시 전송 요청을 보내보자

instapush라는 서비스가 있어서 예전에 그냥 시험삼아 끄적거려 봤는데, 너무 대충이라 간단히 레시피 식으로 어떻게 푸시를 보내는지 알아보는 시간을 가져보자. instapush는 홈페이지에서 계정을 생성한 후 자신의 애플리케이션을 등록하고 필요한 필드들을 설정한 다음, 요구되는 조건에 맞게 REST API를 호출해주면, instapush 앱이 설치된 스마트폰으로 푸시 메시지를 보내주는 서비스이다. 실제로 엄청나게 간단하기 때문에 쉽게 푸시 전송을 보낼 수 있다. 회원 가입 및 앱 생성 먼저 instapush 홈페이지에 가서 회원가입을 한다.  그런다음 Dashboard의 Apps 탭으로 가면 애플리케이션을 만들라는 버튼이 있다. [+ Add Application] 버튼을 클릭해서… 더 보기 »instapush로 메시지 푸시 전송 요청을 보내보자

Pages: 1 2

Subprocess 모듈 사용법 – 파이썬에서 서브 프로세스를 생성하기

Subprocess 모듈 이란?

subprocess 모듈은 파이썬 프로그램 내에서 새로운 프로세스를 스폰하고 여기에 입출력 파이프를 연결하며 리턴코드를 획득할 수 있도록 하는 모듈로, 다른 언어로 만들어진 프로그램을 통합, 제어할 수 있게 만드는 모듈이다. 이 모듈은 기존에 오랜된 몇몇 모듈과 함수(os.system, os.spawn*)들을 대체하기 위해 만들어졌다. (혹은 os.popen 같은 함수도…)

더 보기 »Subprocess 모듈 사용법 – 파이썬에서 서브 프로세스를 생성하기

오일러 프로젝트 11

아래와 같은 20×20 격자가 있습니다.

08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 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 03 45 02 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 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 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 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48

위에서 대각선 방향으로 연속된 붉은 숫자 네 개의 곱은 26 × 63 × 78 × 14 = 1788696 입니다. 그러면 수평, 수직, 또는 대각선 방향으로 연속된 숫자 네 개의 곱 중 최대값은 얼마입니까? (http://euler.synap.co.kr/prob_detail.php?id=11)

더 보기 »오일러 프로젝트 11

파이썬의 이름공간과 변수의 스코프

네임스페이스(name space, 이름공간)이란 프로그래밍 언어에서 특정한 엔티티를 이름에 따라 구분할 수 있는 범위를 말하는 것이다. 소스코드를 작성할 때 가장 어려운 일 중 하나는 변수나 함수의 이름을 정하는 것인데, 충돌이 발생하지 않도록 변수/함수의 이름을 모두 유니크하게 만드는 것은 현실적으로 불가능하다. 모든 이름을 외우고 있기도 어렵거니와, 여러 사람이 협업하는 경우에 다른 사람이 쓸 이름까지 다 알 수는 없기 때문이다.

그래서 프로그래밍언어에서는 네임스페이스라는 개념을 도입하여, 특정한 하나의 이름이 통용될 수 있는 범위를 제한한다. 따라서 소속된 네임스페이스가 다르다면 같은 이름이 다른 개체를 가리키도록 하는 것이 가능해진다.

더 보기 »파이썬의 이름공간과 변수의 스코프