본문 바로가기

프로그램언어

스택 괄호검사 프로그램 스택을 이용하여 괄호를 검사하는 프로그램을 확인해보겠습니다. 괄호는 "[, ]", "{, }", "(, )"등 세가지를 사용하여 서로쌍인지 검사하겠습니다. 소스 코드 #include #include #include #define MAX_STACK_SIZE 100 typedef char element; typedef struct { element data[MAX_STACK_SIZE]; int top; } StackType; // 스택 초기화 함수 void init_stack(StackType* s) { s->top = -1; } // 공백 상태 검출 함수 int is_empty(StackType* s) { return (s->top == -1); } // 포화 상태 검출 함수 int is_full(Stac.. 더보기
자료구조 스택 스택이란? 스택은 사전적으로 '건초', '더미'를 의미한다. 자료구조에서 스택은 LIFO(Last-In First-Out)으로 마지막에 들어온 것이 먼저 나간다는 뜻으로 후입선출법이라고 한다. 예을 들어 접시 더미를 생각해보면 접시를 한개씩 쌓아올리고 맨 위부터 한 개씩 뺀다고 생각하면 먼저 쌓아올린 접시가 나중에 나갈것이고 나중에 쌓아올린 접시가 먼저 나갈 것이다. 이처럼 먼저 들어온게 나중에 나가는 것을 '선입후출'이라하고 나중에 들어온게 먼저 나가는 것을 '후입선출'이라 한다. 스택의 연산 스택에는 두 가지의 기본 연산이 있다. 위 그림과 같이 삽입 연산(PUSH)과 삭제 연산(POP)이다. 그 외의 연산도 필요한다. 아래에서 연산들을 확인해보자. is_sull(s) : 스택이 가득 차있는지 검사하.. 더보기
거북이 글자쓰기(모듈버전) [프로그램2]에서 만든 임의의 위치에 글자를 쓰는 거북이와 기능이 같다. 하지만 임의의 위치, 색상, 글자 크기 등의 함수를 사용해 추출하고 앞에서 배운 모듈로 작성할 것이다. 소스코드1 (myTurtle.py) import random from tkinter.simpledialog import * def getString() : retStr = '' retStr = askstring('문자열 입력', '거북이 쓸 문자열 입력') return retStr def getRGB() : r, g, b = 0, 0, 0 r = random.random() g = random.random() b = random.random() return(r, g, b) def getXYAS(sw, sh) : x, y, angl.. 더보기
거북이 원 모양으로 글자쓰기 [프로그램 2]를 수정해 다음과 같이 반시계방향으로 원을 그리면서 글자를 입력하시오. 힌트 : 중심에서 반지름은 100정도로 한다. 글자의 크기는 20정도로 고정한다. 힌트 : 360도에서 문자열의 개수만큼 나누어 각도를 회전시키면서 글자를 쓴다. 힌트 : 거리와 각도로 좌표를 구하는 공식은 다음과 같다. 공식 : X좌표 = 거리 * COS(각도), Y좌표 = 거리 * SIN(각도) 힌트 : COS() 및 SIN()함수의 각도는 라디안값으로 처리해야 한다. 라디안 = 3.14 * 각도 / 180 소스코드 import turtle import random from tkinter.simpledialog import * import math ## 전역 변수 선언 부분 ## inStr = '' swidth, s.. 더보기
거북이 글자쓰기 터틀 그래픽에서 문자열을 입력받고, 입력받은 문자열을 한 글자씩 임의의 크기와 색상으로 임의의 위치에 거북이가 쓰는 프로그램이다. askstring()함수로 문자열을 입력받는다. 소스코드 import turtle import random from tkinter.simpledialog import * ## 전역변수 선언 부분 ## inStr = '' swidth, sheight = 300, 300 tX, tY, txtSize = [0] * 3 ## 메인 함수 부분 ## turtle.title('거북이 글자쓰기') turtle.shape('turtle') turtle.setup(width = swidth + 50, height = sheight + 50) turtle.screensize(swidth, she.. 더보기
거북이 리스트 활용 정렬 [프로그램 1]을 수정해 X+Y 좌표가 가장 작은 거북이부터 정렬한 수 거북이끼리 선을 긋는다. 예를 들어 (10, 10), (-100, -50), (50, 10) 세 좌표의 거북이를 X+Y값으로 정렬하면 (-100, -50), (10, 10), (50, 10)이 되는데, 이 세 거북이를 선으로 이으면 된다. 다음 결과는 거북이 10마리를 좌표로 정렬한 후 선을 그은 결과아다. 힌트 : 각 거북이 리스트의 두번째 값인 X좌표와 세번째 값인 Y좌표를 더한 결과를 playerTurtles를 오름차순 정렬해야 한다. 힌트 : 시작 거북이는 정렬 후 가장 첫 번째 거북이로 해야 한다. 힌트 : 거북이 사이에 선을 그으려면 앞 거북이의 좌표를 저장해고 있어야 한다. 소스코드 import turtle import .. 더보기
거북이 리스트 활용 리스트를 사용해 터틀 그래픽 응용프로그램을 만들어 보자. 거북이 100마리의 리스트를 만든 후 거북이 100마리가 화면 중앙에서 임의의 위치로 차례대로 움직이게 할 것이다. 거북이 1마리의 1차원 리스트를 다음과 같이 값이 7개 있는 형태로 구성할 것이다. 거북이는 화면 중앙(0, 0)에서 지정된 위치(X, Y)까지 선을 그리고 이동하고 크기와 색상을 지정하는데 X, Y, 크기, 색상은 모두 임의의 값으로 추출할 것이다. 1차원 리스트 : [거북이, X위치, Y위치, 거북이크기, 거북이색상(R), 거북이색상(G), 거북이색상(B)] 2차원 리스트 : 1차원 리스트를 100개 생성 소스코드 import turtle import random ## 전역 변수 부분 ## swidth, sheight = 500,.. 더보기
거북이로 구구단 출력하기 터틀 그래픽을 이용해 아래그림과 같이 구구단을 출력하는 프로그램을 만든다. write() 함수 turtle.write( arg , move = False , align = "left" , font = ( "Arial" , 8 , "normal") ) 매개 변수 arg – TurtleScreen에 쓸 객체 move – 참 / 거짓 align – 문자열 "왼쪽", "중앙"또는 오른쪽 " font – 트리플 (fontname, fontsize, fonttype) 주어진 글꼴을 사용하여 정렬( "왼쪽", "가운데", "오른쪽")에 따라 현재 거북이 위치에 텍스트 -arg 의 문자열을 출력합니다. 펜 텍스트의 오른쪽 하단으로 이동합니다. 기본적으로 이동은 False 입니다. 소스코드 import turtle ##.. 더보기