Turtle 100제 코드 분석 평가

완료 0 / 100

각 코드의 특성을 읽고 판단하는 100문항

100문항을 동일 문법 확인 문제로 반복하지 않고, 코드별로 실행 순서·좌표·각도·반복 횟수·변수 변화·수학식·자료구조·재귀·백트래킹·이벤트·OOP·애니메이션 등을 서로 다른 관점에서 묻도록 구성했습니다.

각 문항은 5개 보기 중 옳은 설명 3개를 정확히 선택해야 1점입니다. 채점 뒤에는 정답과 오답뿐 아니라 각 보기마다 왜 옳거나 틀린지 풀이가 표시되고 TXT에도 그대로 저장됩니다.

001 / 100

001. 거북이 창 열기

다음 「거북이 창 열기」 코드에서 실행순서 추적의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

turtle.done()
002 / 100

002. 거북이 만들기

다음 「거북이 만들기」 코드에서 최종상태 예측의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

turtle.done()
003 / 100

003. 앞으로 이동하기

다음 「앞으로 이동하기」 코드에서 수치 계산의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.forward(100)

turtle.done()
004 / 100

004. 뒤로 이동하기

다음 「뒤로 이동하기」 코드에서 명령의 역할 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.backward(100)

turtle.done()
005 / 100

005. 왼쪽으로 회전

다음 「왼쪽으로 회전」 코드에서 코드 수정 영향의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.forward(100)
t.left(90)
t.forward(100)

turtle.done()
006 / 100

006. 오른쪽으로 회전

다음 「오른쪽으로 회전」 코드에서 좌표 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.forward(100)
t.right(90)
t.forward(100)

turtle.done()
007 / 100

007. 펜 들기와 내리기

다음 「펜 들기와 내리기」 코드에서 방향각 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

t.forward(50)
t.penup()
t.forward(50)
t.pendown()
t.forward(50)

turtle.done()
008 / 100

008. 좌표로 이동하기

다음 「좌표로 이동하기」 코드에서 반복횟수 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

t.goto(100, 100)
t.goto(-100, 100)
t.goto(0, 0)

turtle.done()
009 / 100

009. 거북이 모양 바꾸기

다음 「거북이 모양 바꾸기」 코드에서 함수 호출 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.shape("turtle")
t.forward(100)

turtle.done()
010 / 100

010. 속도 조절하기

다음 「속도 조절하기」 코드에서 자료 흐름 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(3)

for _ in range(4):
    t.forward(100)
    t.left(90)

turtle.done()
011 / 100

011. 선 색상 바꾸기

다음 「선 색상 바꾸기」 코드에서 오류 원인 판별의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.pencolor("red")
t.forward(150)

turtle.done()
012 / 100

012. 선 굵기 바꾸기

다음 「선 굵기 바꾸기」 코드에서 출력 위치 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.pensize(8)
t.forward(150)

turtle.done()
013 / 100

013. 배경색 바꾸기

다음 「배경색 바꾸기」 코드에서 도형의 수학적 성질의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

screen = turtle.Screen()
screen.bgcolor("lightyellow")

t = turtle.Turtle()
t.forward(120)

turtle.done()
014 / 100

014. 정사각형

다음 「정사각형」 코드에서 변수 변화 추적의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

for _ in range(4):
    t.forward(100)
    t.left(90)

turtle.done()
015 / 100

015. 정삼각형

다음 「정삼각형」 코드에서 일반화 가능성의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

for _ in range(3):
    t.forward(120)
    t.left(120)

turtle.done()
016 / 100

016. 정오각형

다음 「정오각형」 코드에서 이벤트 흐름의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

for _ in range(5):
    t.forward(100)
    t.left(72)

turtle.done()
017 / 100

017. 정n각형

다음 「정n각형」 코드에서 재귀 종료 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

n = int(input("변의 수: "))

t = turtle.Turtle()

for _ in range(n):
    t.forward(80)
    t.left(360 / n)

turtle.done()
018 / 100

018. 원 그리기

다음 「원 그리기」 코드에서 백트래킹 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.circle(100)

turtle.done()
019 / 100

019. 반원

다음 「반원」 코드에서 객체 상태 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.circle(100, 180)

turtle.done()
020 / 100

020. 점 찍기

다음 「점 찍기」 코드에서 자료구조 처리순서의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.dot(30, "blue")

turtle.done()
021 / 100

021. 글자 쓰기

다음 「글자 쓰기」 코드에서 시간 흐름 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.write("Hello Turtle!", font=("Arial", 20, "bold"))

turtle.done()
022 / 100

022. 현재 좌표 확인

다음 「현재 좌표 확인」 코드에서 그래픽 성능 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.forward(100)

print(t.position())

turtle.done()
023 / 100

023. 현재 방향 확인

다음 「현재 방향 확인」 코드에서 기하 변환 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.left(45)

print(t.heading())

turtle.done()
024 / 100

024. 방향 직접 설정

다음 「방향 직접 설정」 코드에서 알고리즘 비교의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.setheading(90)
t.forward(100)

turtle.done()
025 / 100

025. 숨기기

다음 「숨기기」 코드에서 조건식 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.hideturtle()

for _ in range(4):
    t.forward(100)
    t.left(90)

turtle.done()
026 / 100

026. 도장 찍기

다음 「도장 찍기」 코드에서 실행순서 추적의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.shape("turtle")

for _ in range(8):
    t.stamp()
    t.forward(40)

turtle.done()
027 / 100

027. 색 채우기

다음 「색 채우기」 코드에서 최종상태 예측의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.fillcolor("skyblue")

t.begin_fill()

for _ in range(4):
    t.forward(120)
    t.left(90)

t.end_fill()

turtle.done()
028 / 100

028. 별 그리기

다음 「별 그리기」 코드에서 수치 계산의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

for _ in range(5):
    t.forward(180)
    t.right(144)

turtle.done()
029 / 100

029. 나선 정사각형

다음 「나선 정사각형」 코드에서 명령의 역할 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

length = 10

for _ in range(40):
    t.forward(length)
    t.left(90)
    length += 5

turtle.done()
030 / 100

030. 원형 꽃

다음 「원형 꽃」 코드에서 코드 수정 영향의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

for _ in range(36):
    t.circle(80)
    t.left(10)

turtle.done()
031 / 100

031. 무지개 선

다음 「무지개 선」 코드에서 좌표 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

colors = ["red", "orange", "yellow", "green", "blue", "purple"]

t = turtle.Turtle()

for color in colors:
    t.pencolor(color)
    t.forward(60)
    t.left(60)

turtle.done()
032 / 100

032. while 정사각 나선

다음 「while 정사각 나선」 코드에서 방향각 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

length = 10

while length <= 200:
    t.forward(length)
    t.left(90)
    length += 10

turtle.done()
033 / 100

033. 함수로 정사각형

다음 「함수로 정사각형」 코드에서 반복횟수 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def square(size):
    for _ in range(4):
        t.forward(size)
        t.left(90)

square(120)

turtle.done()
034 / 100

034. 크기가 다른 사각형

다음 「크기가 다른 사각형」 코드에서 함수 호출 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def square(size):
    for _ in range(4):
        t.forward(size)
        t.left(90)

square(50)
square(100)
square(150)

turtle.done()
035 / 100

035. 함수로 정n각형

다음 「함수로 정n각형」 코드에서 자료 흐름 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def polygon(n, size):
    for _ in range(n):
        t.forward(size)
        t.left(360 / n)

polygon(8, 70)

turtle.done()
036 / 100

036. 함수로 별

다음 「함수로 별」 코드에서 오류 원인 판별의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def star(size):
    for _ in range(5):
        t.forward(size)
        t.right(144)

star(150)

turtle.done()
037 / 100

037. 여러 위치에 사각형

다음 「여러 위치에 사각형」 코드에서 출력 위치 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def square(x, y, size):
    t.penup()
    t.goto(x, y)
    t.pendown()

    for _ in range(4):
        t.forward(size)
        t.left(90)

square(-150, 0, 80)
square(0, 0, 80)
square(150, 0, 80)

turtle.done()
038 / 100

038. RGB 색상

다음 「RGB 색상」 코드에서 도형의 수학적 성질의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

screen = turtle.Screen()
screen.colormode(255)

t = turtle.Turtle()
t.pencolor(255, 100, 50)
t.forward(150)

turtle.done()
039 / 100

039. 랜덤 색상

다음 「랜덤 색상」 코드에서 변수 변화 추적의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import random

screen = turtle.Screen()
screen.colormode(255)

t = turtle.Turtle()

for _ in range(20):
    color = (
        random.randint(0, 255),
        random.randint(0, 255),
        random.randint(0, 255)
    )

    t.pencolor(color)
    t.forward(20)
    t.left(30)

turtle.done()
040 / 100

040. 랜덤 워크

다음 「랜덤 워크」 코드에서 일반화 가능성의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import random

t = turtle.Turtle()
t.speed(0)

for _ in range(100):
    t.forward(20)
    t.left(random.choice([0, 90, 180, 270]))

turtle.done()
041 / 100

041. 좌표축 그리기

다음 「좌표축 그리기」 코드에서 이벤트 흐름의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

t.penup()
t.goto(-250, 0)
t.pendown()
t.goto(250, 0)

t.penup()
t.goto(0, -250)
t.pendown()
t.goto(0, 250)

turtle.done()
042 / 100

042. 사인 함수 그래프

다음 「사인 함수 그래프」 코드에서 재귀 종료 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

t = turtle.Turtle()
t.speed(0)

t.penup()

for x in range(-300, 301):
    y = 80 * math.sin(math.radians(x))

    if x == -300:
        t.goto(x, y)
        t.pendown()
    else:
        t.goto(x, y)

turtle.done()
043 / 100

043. 코사인 함수 그래프

다음 「코사인 함수 그래프」 코드에서 백트래킹 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

t = turtle.Turtle()
t.speed(0)
t.penup()

for x in range(-300, 301):
    y = 80 * math.cos(math.radians(x))
    t.goto(x, y)
    t.pendown()

turtle.done()
044 / 100

044. 포물선

다음 「포물선」 코드에서 객체 상태 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)
t.penup()

for x in range(-200, 201):
    y = x * x / 200 - 100
    t.goto(x, y)
    t.pendown()

turtle.done()
045 / 100

045. 원의 매개변수 표현

다음 「원의 매개변수 표현」 코드에서 자료구조 처리순서의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

t = turtle.Turtle()
t.speed(0)
t.penup()

for angle in range(361):
    x = 150 * math.cos(math.radians(angle))
    y = 150 * math.sin(math.radians(angle))

    t.goto(x, y)
    t.pendown()

turtle.done()
046 / 100

046. 나선 곡선

다음 「나선 곡선」 코드에서 시간 흐름 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

t = turtle.Turtle()
t.speed(0)
t.penup()

for angle in range(720):
    r = angle * 0.2
    x = r * math.cos(math.radians(angle))
    y = r * math.sin(math.radians(angle))

    t.goto(x, y)
    t.pendown()

turtle.done()
047 / 100

047. 장미곡선

다음 「장미곡선」 코드에서 그래픽 성능 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

t = turtle.Turtle()
t.speed(0)
t.penup()

for angle in range(1441):
    theta = math.radians(angle)
    r = 180 * math.sin(5 * theta)

    x = r * math.cos(theta)
    y = r * math.sin(theta)

    t.goto(x, y)
    t.pendown()

turtle.done()
048 / 100

048. 함수 반환값 활용

다음 「함수 반환값 활용」 코드에서 기하 변환 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

def point_on_circle(radius, angle):
    x = radius * math.cos(math.radians(angle))
    y = radius * math.sin(math.radians(angle))
    return x, y

t = turtle.Turtle()

x, y = point_on_circle(150, 45)
t.goto(x, y)

turtle.done()
049 / 100

049. 리스트에 꼭짓점 저장

다음 「리스트에 꼭짓점 저장」 코드에서 알고리즘 비교의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

points = []

for i in range(5):
    angle = 90 + i * 72
    x = 150 * math.cos(math.radians(angle))
    y = 150 * math.sin(math.radians(angle))
    points.append((x, y))

print(points)

turtle.done()
050 / 100

050. 리스트 좌표 연결

다음 「리스트 좌표 연결」 코드에서 조건식 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

points = [
    (-100, -100),
    (100, -100),
    (100, 100),
    (-100, 100)
]

t = turtle.Turtle()
t.penup()
t.goto(points[0])
t.pendown()

for p in points[1:]:
    t.goto(p)

t.goto(points[0])

turtle.done()
051 / 100

051. enumerate 활용

다음 「enumerate 활용」 코드에서 실행순서 추적의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

points = [
    (-150, 0),
    (0, 150),
    (150, 0)
]

t = turtle.Turtle()

for i, p in enumerate(points):
    t.penup()
    t.goto(p)
    t.write(str(i))

turtle.done()
052 / 100

052. 두 거북이

다음 「두 거북이」 코드에서 최종상태 예측의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

a = turtle.Turtle()
b = turtle.Turtle()

a.pencolor("red")
b.pencolor("blue")

a.forward(120)
b.left(90)
b.forward(120)

turtle.done()
053 / 100

053. 여러 거북이 리스트

다음 「여러 거북이 리스트」 코드에서 수치 계산의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

turtles = []

for i in range(4):
    t = turtle.Turtle()
    t.left(i * 90)
    turtles.append(t)

for t in turtles:
    t.forward(150)

turtle.done()
054 / 100

054. 클릭 위치로 이동

다음 「클릭 위치로 이동」 코드에서 명령의 역할 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def move(x, y):
    t.goto(x, y)

turtle.onscreenclick(move)

turtle.done()
055 / 100

055. 키보드로 전진

다음 「키보드로 전진」 코드에서 코드 수정 영향의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def move():
    t.forward(20)

screen = turtle.Screen()
screen.listen()
screen.onkey(move, "Up")

turtle.done()
056 / 100

056. 키보드 조종

다음 「키보드 조종」 코드에서 좌표 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def forward():
    t.forward(20)

def left():
    t.left(15)

def right():
    t.right(15)

screen = turtle.Screen()
screen.listen()

screen.onkey(forward, "Up")
screen.onkey(left, "Left")
screen.onkey(right, "Right")

turtle.done()
057 / 100

057. 화면 클릭 점 찍기

다음 「화면 클릭 점 찍기」 코드에서 방향각 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.hideturtle()

def draw_dot(x, y):
    t.penup()
    t.goto(x, y)
    t.dot(20)

turtle.onscreenclick(draw_dot)

turtle.done()
058 / 100

058. 재귀 전진

다음 「재귀 전진」 코드에서 반복횟수 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def line(n):
    if n == 0:
        return

    t.forward(20)
    line(n - 1)

line(10)

turtle.done()
059 / 100

059. 재귀 정사각형

다음 「재귀 정사각형」 코드에서 함수 호출 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def square(side):
    if side == 0:
        return

    t.forward(100)
    t.left(90)

    square(side - 1)

square(4)

turtle.done()
060 / 100

060. 재귀 별

다음 「재귀 별」 코드에서 자료 흐름 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def star(n):
    if n == 0:
        return

    t.forward(150)
    t.right(144)

    star(n - 1)

star(5)

turtle.done()
061 / 100

061. 재귀 나선

다음 「재귀 나선」 코드에서 오류 원인 판별의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def spiral(length):
    if length > 200:
        return

    t.forward(length)
    t.left(90)

    spiral(length + 5)

spiral(10)

turtle.done()
062 / 100

062. 재귀 나무

다음 「재귀 나무」 코드에서 출력 위치 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.left(90)
t.speed(0)

def tree(length, depth):
    if depth == 0:
        return

    t.forward(length)
    t.left(30)

    tree(length * 0.7, depth - 1)

    t.right(60)

    tree(length * 0.7, depth - 1)

    t.left(30)
    t.backward(length)

tree(100, 6)

turtle.done()
063 / 100

063. 코흐 곡선

다음 「코흐 곡선」 코드에서 도형의 수학적 성질의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

def koch(length, depth):
    if depth == 0:
        t.forward(length)
        return

    koch(length / 3, depth - 1)
    t.left(60)
    koch(length / 3, depth - 1)
    t.right(120)
    koch(length / 3, depth - 1)
    t.left(60)
    koch(length / 3, depth - 1)

koch(400, 4)

turtle.done()
064 / 100

064. 코흐 눈송이

다음 「코흐 눈송이」 코드에서 변수 변화 추적의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

def koch(length, depth):
    if depth == 0:
        t.forward(length)
        return

    for angle in [60, -120, 60, 0]:
        koch(length / 3, depth - 1)
        t.left(angle)

for _ in range(3):
    koch(300, 3)
    t.right(120)

turtle.done()
065 / 100

065. 시에르핀스키 삼각형

다음 「시에르핀스키 삼각형」 코드에서 일반화 가능성의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

def triangle(size):
    for _ in range(3):
        t.forward(size)
        t.left(120)

def sierpinski(size, depth):
    if depth == 0:
        triangle(size)
        return

    sierpinski(size / 2, depth - 1)

    t.forward(size / 2)
    sierpinski(size / 2, depth - 1)

    t.backward(size / 2)

    t.left(60)
    t.forward(size / 2)
    t.right(60)

    sierpinski(size / 2, depth - 1)

    t.left(60)
    t.backward(size / 2)
    t.right(60)

sierpinski(300, 4)

turtle.done()
066 / 100

066. 재귀 원

다음 「재귀 원」 코드에서 이벤트 흐름의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

def circles(radius, depth):
    if depth == 0:
        return

    t.circle(radius)
    circles(radius * 0.8, depth - 1)

circles(150, 12)

turtle.done()
067 / 100

067. 재귀 회전 다각형

다음 「재귀 회전 다각형」 코드에서 재귀 종료 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

def polygon(size, depth):
    if depth == 0:
        return

    for _ in range(4):
        t.forward(size)
        t.left(90)

    t.left(10)
    polygon(size * 0.92, depth - 1)

polygon(220, 25)

turtle.done()
068 / 100

068. 재귀 피보나치 길이 선

다음 「재귀 피보나치 길이 선」 코드에서 백트래킹 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

def fib(n):
    if n <= 1:
        return n
    return fib(n - 1) + fib(n - 2)

for i in range(2, 10):
    t.forward(fib(i) * 3)
    t.left(90)

turtle.done()
069 / 100

069. 스택 개념 시각화

다음 「스택 개념 시각화」 코드에서 객체 상태 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

stack = [50, 80, 110, 140]

t = turtle.Turtle()
t.speed(0)

while stack:
    size = stack.pop()

    for _ in range(4):
        t.forward(size)
        t.left(90)

    t.left(10)

turtle.done()
070 / 100

070. 큐 개념 시각화

다음 「큐 개념 시각화」 코드에서 자료구조 처리순서의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
from collections import deque

q = deque([50, 80, 110, 140])

t = turtle.Turtle()
t.speed(0)

while q:
    size = q.popleft()

    for _ in range(4):
        t.forward(size)
        t.left(90)

    t.left(10)

turtle.done()
071 / 100

071. 클래스로 거북이 관리

다음 「클래스로 거북이 관리」 코드에서 시간 흐름 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

class Drawer:
    def __init__(self):
        self.t = turtle.Turtle()

    def line(self, length):
        self.t.forward(length)

d = Drawer()
d.line(150)

turtle.done()
072 / 100

072. OOP 정사각형

다음 「OOP 정사각형」 코드에서 그래픽 성능 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

class SquareDrawer:
    def __init__(self, size):
        self.size = size
        self.t = turtle.Turtle()

    def draw(self):
        for _ in range(4):
            self.t.forward(self.size)
            self.t.left(90)

s = SquareDrawer(120)
s.draw()

turtle.done()
073 / 100

073. OOP 정n각형

다음 「OOP 정n각형」 코드에서 기하 변환 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

class Polygon:
    def __init__(self, n, size):
        self.n = n
        self.size = size
        self.t = turtle.Turtle()

    def draw(self):
        for _ in range(self.n):
            self.t.forward(self.size)
            self.t.left(360 / self.n)

p = Polygon(7, 80)
p.draw()

turtle.done()
074 / 100

074. OOP 여러 객체

다음 「OOP 여러 객체」 코드에서 알고리즘 비교의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

class Polygon:
    def __init__(self, n, size):
        self.n = n
        self.size = size
        self.t = turtle.Turtle()

    def draw(self):
        for _ in range(self.n):
            self.t.forward(self.size)
            self.t.left(360 / self.n)

a = Polygon(3, 100)
b = Polygon(5, 100)

a.draw()
b.draw()

turtle.done()
075 / 100

075. 상속 활용

다음 「상속 활용」 코드에서 조건식 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

class Shape:
    def __init__(self):
        self.t = turtle.Turtle()

class Square(Shape):
    def draw(self, size):
        for _ in range(4):
            self.t.forward(size)
            self.t.left(90)

s = Square()
s.draw(120)

turtle.done()
076 / 100

076. OOP 재귀 나무

다음 「OOP 재귀 나무」 코드에서 실행순서 추적의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

class Tree:
    def __init__(self):
        self.t = turtle.Turtle()
        self.t.left(90)
        self.t.speed(0)

    def draw(self, length, depth):
        if depth == 0:
            return

        self.t.forward(length)
        self.t.left(30)

        self.draw(length * 0.7, depth - 1)

        self.t.right(60)

        self.draw(length * 0.7, depth - 1)

        self.t.left(30)
        self.t.backward(length)

tree = Tree()
tree.draw(100, 6)

turtle.done()
077 / 100

077. OOP 나선 다각형

다음 「OOP 나선 다각형」 코드에서 최종상태 예측의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

class Spiral:
    def __init__(self):
        self.t = turtle.Turtle()
        self.t.speed(0)

    def draw(self, size, depth):
        if depth == 0:
            return

        for _ in range(4):
            self.t.forward(size)
            self.t.left(90)

        self.t.left(10)
        self.draw(size * 0.92, depth - 1)

s = Spiral()
s.draw(220, 25)

turtle.done()
078 / 100

078. 내접 정사각형 반복

다음 「내접 정사각형 반복」 코드에서 수치 계산의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

points = [
    (-150, -150),
    (150, -150),
    (150, 150),
    (-150, 150)
]

for _ in range(20):
    t.penup()
    t.goto(points[0])
    t.pendown()

    for p in points[1:]:
        t.goto(p)

    t.goto(points[0])

    new_points = []

    for i in range(4):
        x1, y1 = points[i]
        x2, y2 = points[(i + 1) % 4]

        x = 0.9 * x1 + 0.1 * x2
        y = 0.9 * y1 + 0.1 * y2

        new_points.append((x, y))

    points = new_points

turtle.done()
079 / 100

079. 내접 정n각형

다음 「내접 정n각형」 코드에서 명령의 역할 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

n = 6
r = 0.15
radius = 200

points = []

for i in range(n):
    a = math.radians(90 + i * 360 / n)
    points.append((radius * math.cos(a), radius * math.sin(a)))

t = turtle.Turtle()
t.speed(0)

for _ in range(25):
    t.penup()
    t.goto(points[0])
    t.pendown()

    for i in range(1, n):
        t.goto(points[i])

    t.goto(points[0])

    new_points = []

    for i in range(n):
        x1, y1 = points[i]
        x2, y2 = points[(i + 1) % n]

        new_points.append((
            (1-r)*x1 + r*x2,
            (1-r)*y1 + r*y2
        ))

    points = new_points

turtle.done()
080 / 100

080. 재귀 내접 정n각형

다음 「재귀 내접 정n각형」 코드에서 코드 수정 영향의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

n = 6
r = 0.15

t = turtle.Turtle()
t.speed(0)

points = []

for i in range(n):
    a = math.radians(90 + i * 360 / n)
    points.append((200 * math.cos(a), 200 * math.sin(a)))

def draw(points, depth):
    if depth == 0:
        return

    t.penup()
    t.goto(points[0])
    t.pendown()

    for i in range(1, n):
        t.goto(points[i])

    t.goto(points[0])

    new_points = []

    for i in range(n):
        x1, y1 = points[i]
        x2, y2 = points[(i + 1) % n]

        new_points.append((
            (1-r)*x1 + r*x2,
            (1-r)*y1 + r*y2
        ))

    draw(new_points, depth - 1)

draw(points, 25)

turtle.done()
081 / 100

081. 테오도로스 와선

다음 「테오도로스 와선」 코드에서 좌표 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

t = turtle.Turtle()
t.speed(0)

scale = 50
x, y = 1, 0

t.penup()
t.goto(0, 0)
t.pendown()
t.goto(x * scale, y * scale)

for n in range(1, 17):
    R = math.sqrt(x*x + y*y)

    new_x = x - y / R
    new_y = y + x / R

    t.goto(new_x * scale, new_y * scale)

    x, y = new_x, new_y

turtle.done()
082 / 100

082. 극좌표 별 나선

다음 「극좌표 별 나선」 코드에서 방향각 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

t = turtle.Turtle()
t.speed(0)
t.penup()

for i in range(1200):
    theta = math.radians(i)
    r = 0.12 * i * (1 + 0.3 * math.sin(5 * theta))

    x = r * math.cos(theta)
    y = r * math.sin(theta)

    t.goto(x, y)
    t.pendown()

turtle.done()
083 / 100

083. 리사주 곡선

다음 「리사주 곡선」 코드에서 반복횟수 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

t = turtle.Turtle()
t.speed(0)
t.penup()

for i in range(2000):
    theta = math.radians(i)

    x = 200 * math.sin(3 * theta)
    y = 150 * math.sin(4 * theta)

    t.goto(x, y)
    t.pendown()

turtle.done()
084 / 100

084. 하트 곡선

다음 「하트 곡선」 코드에서 함수 호출 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

t = turtle.Turtle()
t.speed(0)
t.penup()

for i in range(361):
    a = math.radians(i)

    x = 16 * math.sin(a) ** 3
    y = (
        13 * math.cos(a)
        - 5 * math.cos(2*a)
        - 2 * math.cos(3*a)
        - math.cos(4*a)
    )

    t.goto(x * 10, y * 10)
    t.pendown()

turtle.done()
085 / 100

085. 카디오이드

다음 「카디오이드」 코드에서 자료 흐름 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

t = turtle.Turtle()
t.speed(0)
t.penup()

for i in range(721):
    theta = math.radians(i)
    r = 150 * (1 - math.cos(theta))

    x = r * math.cos(theta)
    y = r * math.sin(theta)

    t.goto(x, y)
    t.pendown()

turtle.done()
086 / 100

086. 스피로그래프

다음 「스피로그래프」 코드에서 오류 원인 판별의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

for _ in range(72):
    t.circle(100)
    t.left(5)

turtle.done()
087 / 100

087. 크기 변화 스피로그래프

다음 「크기 변화 스피로그래프」 코드에서 출력 위치 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

for i in range(60):
    t.circle(30 + i)
    t.left(12)

turtle.done()
088 / 100

088. 점선 만들기

다음 「점선 만들기」 코드에서 도형의 수학적 성질의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()

for _ in range(20):
    t.pendown()
    t.forward(10)

    t.penup()
    t.forward(10)

turtle.done()
089 / 100

089. 격자 그리기

다음 「격자 그리기」 코드에서 변수 변화 추적의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

for y in range(-200, 201, 40):
    t.penup()
    t.goto(-200, y)
    t.pendown()
    t.goto(200, y)

for x in range(-200, 201, 40):
    t.penup()
    t.goto(x, -200)
    t.pendown()
    t.goto(x, 200)

turtle.done()
090 / 100

090. 체스판

다음 「체스판」 코드에서 일반화 가능성의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

t = turtle.Turtle()
t.speed(0)

size = 40

for row in range(8):
    for col in range(8):
        x = -160 + col * size
        y = 160 - row * size

        t.penup()
        t.goto(x, y)
        t.pendown()

        if (row + col) % 2 == 0:
            t.begin_fill()

        for _ in range(4):
            t.forward(size)
            t.right(90)

        if (row + col) % 2 == 0:
            t.end_fill()

turtle.done()
091 / 100

091. 막대그래프

다음 「막대그래프」 코드에서 이벤트 흐름의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

data = [80, 120, 60, 150, 100]

t = turtle.Turtle()
t.speed(0)

x = -200

for value in data:
    t.penup()
    t.goto(x, -150)
    t.pendown()

    for length in [value, 40, value, 40]:
        t.forward(length)
        t.left(90)

    x += 70

turtle.done()
092 / 100

092. 산점도

다음 「산점도」 코드에서 재귀 종료 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import random

t = turtle.Turtle()
t.hideturtle()

for _ in range(100):
    x = random.randint(-250, 250)
    y = random.randint(-200, 200)

    t.penup()
    t.goto(x, y)
    t.dot(5)

turtle.done()
093 / 100

093. 간단한 BFS 시각화

다음 「간단한 BFS 시각화」 코드에서 백트래킹 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
from collections import deque

graph = {
    "A": ["B", "C"],
    "B": ["D", "E"],
    "C": ["F"],
    "D": [],
    "E": [],
    "F": []
}

positions = {
    "A": (0, 150),
    "B": (-100, 50),
    "C": (100, 50),
    "D": (-150, -70),
    "E": (-50, -70),
    "F": (100, -70)
}

q = deque(["A"])
visited = {"A"}

t = turtle.Turtle()
t.hideturtle()

while q:
    node = q.popleft()

    t.penup()
    t.goto(positions[node])
    t.dot(25)
    t.write(node)

    for nxt in graph[node]:
        if nxt not in visited:
            visited.add(nxt)
            q.append(nxt)

turtle.done()
094 / 100

094. 간단한 DFS 시각화

다음 「간단한 DFS 시각화」 코드에서 객체 상태 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

graph = {
    "A": ["B", "C"],
    "B": ["D", "E"],
    "C": ["F"],
    "D": [],
    "E": [],
    "F": []
}

positions = {
    "A": (0, 150),
    "B": (-100, 50),
    "C": (100, 50),
    "D": (-150, -70),
    "E": (-50, -70),
    "F": (100, -70)
}

t = turtle.Turtle()
t.hideturtle()
visited = set()

def dfs(node):
    visited.add(node)

    t.penup()
    t.goto(positions[node])
    t.dot(25)
    t.write(node)

    for nxt in graph[node]:
        if nxt not in visited:
            dfs(nxt)

dfs("A")

turtle.done()
095 / 100

095. 백트래킹 미로 개념

다음 「백트래킹 미로 개념」 코드에서 자료구조 처리순서의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

maze = [
    [0, 0, 1, 0],
    [1, 0, 1, 0],
    [0, 0, 0, 0],
    [0, 1, 1, 0]
]

t = turtle.Turtle()
t.shape("turtle")
t.penup()

cell = 60
visited = set()

def go(r, c):
    if r < 0 or r >= 4 or c < 0 or c >= 4:
        return False

    if maze[r][c] == 1 or (r, c) in visited:
        return False

    visited.add((r, c))

    x = -90 + c * cell
    y = 90 - r * cell

    t.goto(x, y)
    t.stamp()

    if (r, c) == (3, 3):
        return True

    return (
        go(r + 1, c)
        or go(r, c + 1)
        or go(r - 1, c)
        or go(r, c - 1)
    )

go(0, 0)

turtle.done()
096 / 100

096. 타이머 애니메이션

다음 「타이머 애니메이션」 코드에서 시간 흐름 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

screen = turtle.Screen()
t = turtle.Turtle()

def move():
    t.forward(5)
    screen.ontimer(move, 50)

move()

turtle.done()
097 / 100

097. 공 튕기기 기초

다음 「공 튕기기 기초」 코드에서 그래픽 성능 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

screen = turtle.Screen()
screen.setup(600, 400)

ball = turtle.Turtle()
ball.shape("circle")
ball.penup()

dx = 4
dy = 3

def move():
    global dx, dy

    ball.setx(ball.xcor() + dx)
    ball.sety(ball.ycor() + dy)

    if ball.xcor() > 280 or ball.xcor() < -280:
        dx *= -1

    if ball.ycor() > 180 or ball.ycor() < -180:
        dy *= -1

    screen.ontimer(move, 20)

move()
turtle.done()
098 / 100

098. 자동 회전 애니메이션

다음 「자동 회전 애니메이션」 코드에서 기하 변환 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle

screen = turtle.Screen()
t = turtle.Turtle()
t.shape("turtle")

def spin():
    t.left(10)
    screen.ontimer(spin, 50)

spin()

turtle.done()
099 / 100

099. 간단한 경주

다음 「간단한 경주」 코드에서 알고리즘 비교의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import random

a = turtle.Turtle()
b = turtle.Turtle()

a.penup()
b.penup()

a.goto(-250, 50)
b.goto(-250, -50)

while a.xcor() < 250 and b.xcor() < 250:
    a.forward(random.randint(1, 10))
    b.forward(random.randint(1, 10))

turtle.done()
100 / 100

100. 원주 위 점

다음 「원주 위 점」 코드에서 조건식 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
import math

t = turtle.Turtle()
t.hideturtle()

for angle in range(0, 360, 15):
    x = 150 * math.cos(math.radians(angle))
    y = 150 * math.sin(math.radians(angle))

    t.penup()
    t.goto(x, y)
    t.dot(8)

turtle.done()