반응형
SMALL

전체 글 200

[Python] 순환(Recursion)호출을 이용한 Fractal 프로그램

야근 때문에 한동안 학습을 못하다가 오랜만에 다시 파이썬(Python)학습 시작! 오늘의 주제는 순환(Recursion)호출입니다 순환(Recursion)호출은 함수 내부에서 자기 자신을 다시 호출하는 구조를 말합니다 이를 이용해서 일부가 전체와 비슷한 형태로 무한히 되풀이되는 기하학적인 형태인 Fractal 혹은 자기 유사성(Self-similarity) 프로그램을 작성해보겠습니다 Fractal은 Mandelbrot라는 분이 처음으로 쓴 단어로 해안선이나 나뭇가지와 같은 자연물, 수학적인 분석, 운동 모형에서 많이 발견된다고 합니다 import turtle def tree(length): if length > 5: #length가 5보다 크면 순환호출을 한다 t.forward(length) #거북이가 ..

Python 2019.09.03

[Python] 함수(Function)를 이용한 간단한 로또(Lotto)추첨 프로그램

이번엔 파이썬(Python)의 함수(Function)에 대해 알아볼겸 간단한 로또(Lotto) 추첨 프로그램을 작성해보겠습니다(로또 당첨되고 싶드아-_-) import random //임의의 숫자를 뽑기위해 이용 def getNumber() : //반환값이 있는 함수 정의, 파라미터는 없음 return random.randrange(1, 46) /************************************************************************************** 참고 : 1. 파이썬(Python)의 함수(Function) 매개변수(Parameter) def getNumber(para1, para2, ...)과 같이 파라미터 여러 개 정의 가능 def getNumber..

Python 2019.08.27

[Python] 문자열 알아보기

이번에는 파이썬(Python)의 자료형 중 문자열에 대해 알아보겠습니다 문자열은 말 그대로 문자들이 나열이고 지난 번에 알아봤던 리스트(List)와 각 원소에 접근하는 방식이 같고 출력은 리스트(List)는 리스트(List)로 문자열은 문자열로 출력됩니다 문자열의 길이를 알고 싶다면 len()함수(Function)을 이용할 수 있는데 위의 그림에서 len(string)을 입력하면 결과로 6이 출력됩니다 이어서 알아두면 유용한 문자열 클래스(Class)의 메소드(Method)들을 알아보겠습니다 메소드(Method)는 클래스(Class)의 인스턴스(Instance).메소드(Method) 형태로 사용되어지며 함수(Function)는 len() 처럼 단독으로 사용됩니다 따라서, 아래의 표에서 사용법에 위의 그림..

Python 2019.08.27

[Python] LIFO(Last In First Out) 주차장(Parking lot) 구현하기

이번엔 자료구조(Data Structure) 중 LIFO(Last In First Out) 구조인 스택(Stack)을 이용하여 한 쪽 벽면이 막힌 직선 형태의 주차장을 구현해보겠습니다 (실제로 이런 주차장은...-_-) 이를 구현하기 위해 먼저 파이썬(Python)의 리스트(List)를 이용합니다 파이썬(Python)의 리스트(List)는 조금 특이합니다 다른 언어들의 배열(Array)와 비슷한 개념이지만 배열(Array)은 같은 타입(Type)의 데이터(Data)의 모임이지만 파이썬(Python)의 리스트(List)는 다른 타입(Type)의 데이터를 묶을 수 있다는 점입니다 자, 그럼 구현을 위해 파이썬(Python)의 리스트(List)가 기본적으로 제공하는 함수(Function)에 대해 알아보겠습니다..

Python 2019.08.21

[Python] 기초 문법(Syntax) 다지기

파이썬(Python)의 기초 문법(Syntax)에 대해 알아보겠습니다 1. print() 함수의 서식 서식 설명 예시 %d, %o, %x 정수(10진수, 8진수, 16진수) 10, a, 12 %f 실수 0.5, 3.14 %c 문자 한 글자 'a' %s 한 글자 이상의 문자열 "한국" /* print() 함수의 서식 */ print("%d" % 5) //5를 10진수로 출력 print("%5d" % 5) //5를 5자리를 확보하여 출력 print("%05d" % 5) //5자리를 확보하여 남는 자리는 0으로 채워(패딩(Padding) 5를 출력 print("%x" % 10) //10을 16진수로 출력 print("%o" % 10) //10을 8진수로 출력 print("%7.1f" % 10.15) //10...

Python 2019.08.20

[Algorithms] 재귀적 프로그래밍(Recursive Programming)_2

재귀적 프로그래밍(Recursive Programming) 두번째 시간으로 n개의 원소를 가지는 집합에서 크기가 r인 부분집합을 고르는 경우의 수 즉, 이항계수를 작성해보겠다 이항계수를 식으로 나타내면 아래와 같다 위와 같이 재귀적으로 함수를 작성할 때에는 중복 계산이 발생해 효율이 나빠질 수 있으므로 주의해야하고 메모이제이션(memoization) 처리 등을 해줘야한다 위의 코드에서는 keep_result 배열에 처리 결과를 저장하고있다 이제 유명한 피보나치(Fibonacci) 수열을 작성해보자 먼저 피보나치(Fibonacci) 수열은 중복계산이 나타나므로 앞서 이항계수를 구할 때처럼 메모이제이션(memoization) 처리한다 참고로 동적 프로그래밍으로도 작성해보았다 그런데 메모이제이션을 통해서든 동..

Algorithms 2019.08.12

[Algorithms] 재귀적 프로그래밍(Recursive Programming)_1

지난 번에 연결리스트를 이용한 큐를 작성하였다 enqueue()함수를 통해 int형 값을 큐(Queue)에 저장하고 dequeue()함수를 통해 큐(Queue)에 저장된 순서대로 하나씩 출력하였는데 큐에 저장된 모든 원소(값)들을 모두 출력하고 싶다면 어떻게 해야할까? 가장 쉽게 떠올릴 수 있는 방법은 head node부터 차례로 출력하는 것이다 자, 그런데 제목이 재귀적 프로그래밍이다 이 dynamic_print_list()함수를 recursive_print_list()함수로 변경해보자 재귀적 프로그래밍(Recursive Programming)을 설명할 때 가장 많이 나오는 인용구는 GNU("GNU's Not Unix!")인데 GNU를 설명하기 위해 자기 자신을 이용하고있기 때문이다 사실 재귀적 프로그..

Algorithms 2019.08.12

[Algorithms] 연결리스트(Linked List)를 이용한 큐(Queue)

오늘은 큐(Queue)를 구현해보는 두번째 시간으로 연결리스트(Linked List)를 이용할 것이다 연결리스트(Linked List)는 노드(구조체)가 여러 종류의 데이터 타입을 담고 있는채로 서로 연결되어 있는 자료구조이다 이를 구현하기 위해서는 먼저.C의 구조체(Struct), 포인터(Pointer)를 숙지해야 구현 가능하지만 설명은 생략하겠다 연결리스트도 구현하기에 따라서 이중 연결리스트(Doubly linked List), 이중 원형 연결리스트 등이 있다 위의 코드에서 head는 선두 노드를 tail은 마지막 노드를 가리킨다 즉, dequeue()함수를 통해 head가 가리키는 노드의 값을 출력하고 enqueue()함수를 통해 생성된 노드가 tail이 된다 배열(Array)로 생성한 큐보다 연결..

Algorithms 2019.07.29

[Algorithms] 배열을 이용한 큐(Queue)

오늘은 큐(Queue)를 구현해보자 큐는 선입선출 FIFO(First In First Out)로 들어온 순서대로 나가는 형태의 자료구조다 큐와 같은 형태를 일상에서 찾자면 은행 창구, 식당 등에서 이용하는 대기번호가 있다 대기번호를 먼저 뽑은 사람이 해당 서비스를 먼저 이용하는 것이다 고딩 점심시간 조금이라도 빨리 먹기 위해 냅다 뛰는 이유도 배식 받는 것이 큐와 같아서-_- 어찌되었든 큐를 구현해보자 위의 코드는 크기가 5인 큐를 구현한 것이다 이 프로그램을 돌려보면 잘 돌아간다-_- 사실 enqueue() 함수룰 5번 호출 후에 dequeue() 함수를 1번 호출하고 다시 enqueue() 함수를 호출하면 에러("index out of bound exception")가 발생해야하지만 C언어가 inde..

Algorithms 2019.07.18

[Python] 간단한 사칙연산 프로그램 만들기

파이썬(Python) 언어에 관심을 가져오다 드디어 본격적으로 학습하기로 마음 먹었다는-_- 1991년 네덜란드 출신의 컴퓨터 프로그래머 귀도 반 로섬(Guido van Rossum, 1956.1.31)이라는 분이 파이썬(Python) 언어를 발표했는데 1989년 크리스마스 주에 연구실이 닫혀 있어서 심심한 김에 만드셨다네요...(대단-_-) 파이썬(Python)이라는 이름을 비단뱀과(Pythonidae)에서 따온거라 누군가 말해줬는데 알고 보니 귀도가 좋아했던 TV 프로그램인 "몬티 파이튼의 날아다니는 서커스(Monty Python's Flying Circus)"에서 따왔다고합니다. 여담으로 이 프로그램은 영국의 코미디 그룹인 몬티 파이튼이 직접 제작한 TV 프로그램으로 영국 BBC에서 1969년에서 ..

Python 2019.05.26
반응형
LIST