각 코드의 특성을 읽고 판단하는 100문항
100문항을 동일 문법 확인 문제로 반복하지 않고, 코드별로 실행 순서·좌표·각도·반복 횟수·변수 변화·수학식·자료구조·재귀·백트래킹·이벤트·OOP·애니메이션 등을 서로 다른 관점에서 묻도록 구성했습니다.
각 문항은 5개 보기 중 옳은 설명 3개를 정확히 선택해야 1점입니다. 채점 뒤에는 정답과 오답뿐 아니라 각 보기마다 왜 옳거나 틀린지 풀이가 표시되고 TXT에도 그대로 저장됩니다.
001. 거북이 창 열기
다음 「거북이 창 열기」 코드에서 실행순서 추적의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
turtle.done()
002. 거북이 만들기
다음 「거북이 만들기」 코드에서 최종상태 예측의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
turtle.done()
003. 앞으로 이동하기
다음 「앞으로 이동하기」 코드에서 수치 계산의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.forward(100)
turtle.done()
004. 뒤로 이동하기
다음 「뒤로 이동하기」 코드에서 명령의 역할 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.backward(100)
turtle.done()
005. 왼쪽으로 회전
다음 「왼쪽으로 회전」 코드에서 코드 수정 영향의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.forward(100)
t.left(90)
t.forward(100)
turtle.done()
006. 오른쪽으로 회전
다음 「오른쪽으로 회전」 코드에서 좌표 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.forward(100)
t.right(90)
t.forward(100)
turtle.done()
007. 펜 들기와 내리기
다음 「펜 들기와 내리기」 코드에서 방향각 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.forward(50)
t.penup()
t.forward(50)
t.pendown()
t.forward(50)
turtle.done()
008. 좌표로 이동하기
다음 「좌표로 이동하기」 코드에서 반복횟수 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.goto(100, 100)
t.goto(-100, 100)
t.goto(0, 0)
turtle.done()
009. 거북이 모양 바꾸기
다음 「거북이 모양 바꾸기」 코드에서 함수 호출 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.forward(100)
turtle.done()
010. 속도 조절하기
다음 「속도 조절하기」 코드에서 자료 흐름 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.speed(3)
for _ in range(4):
t.forward(100)
t.left(90)
turtle.done()
011. 선 색상 바꾸기
다음 「선 색상 바꾸기」 코드에서 오류 원인 판별의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.pencolor("red")
t.forward(150)
turtle.done()
012. 선 굵기 바꾸기
다음 「선 굵기 바꾸기」 코드에서 출력 위치 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.pensize(8)
t.forward(150)
turtle.done()
013. 배경색 바꾸기
다음 「배경색 바꾸기」 코드에서 도형의 수학적 성질의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
screen = turtle.Screen()
screen.bgcolor("lightyellow")
t = turtle.Turtle()
t.forward(120)
turtle.done()
014. 정사각형
다음 「정사각형」 코드에서 변수 변화 추적의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
for _ in range(4):
t.forward(100)
t.left(90)
turtle.done()
015. 정삼각형
다음 「정삼각형」 코드에서 일반화 가능성의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
for _ in range(3):
t.forward(120)
t.left(120)
turtle.done()
016. 정오각형
다음 「정오각형」 코드에서 이벤트 흐름의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
for _ in range(5):
t.forward(100)
t.left(72)
turtle.done()
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. 원 그리기
다음 「원 그리기」 코드에서 백트래킹 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.circle(100)
turtle.done()
019. 반원
다음 「반원」 코드에서 객체 상태 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.circle(100, 180)
turtle.done()
020. 점 찍기
다음 「점 찍기」 코드에서 자료구조 처리순서의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.dot(30, "blue")
turtle.done()
021. 글자 쓰기
다음 「글자 쓰기」 코드에서 시간 흐름 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.write("Hello Turtle!", font=("Arial", 20, "bold"))
turtle.done()
022. 현재 좌표 확인
다음 「현재 좌표 확인」 코드에서 그래픽 성능 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.forward(100)
print(t.position())
turtle.done()
023. 현재 방향 확인
다음 「현재 방향 확인」 코드에서 기하 변환 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.left(45)
print(t.heading())
turtle.done()
024. 방향 직접 설정
다음 「방향 직접 설정」 코드에서 알고리즘 비교의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.setheading(90)
t.forward(100)
turtle.done()
025. 숨기기
다음 「숨기기」 코드에서 조건식 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.hideturtle()
for _ in range(4):
t.forward(100)
t.left(90)
turtle.done()
026. 도장 찍기
다음 「도장 찍기」 코드에서 실행순서 추적의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.shape("turtle")
for _ in range(8):
t.stamp()
t.forward(40)
turtle.done()
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. 별 그리기
다음 「별 그리기」 코드에서 수치 계산의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
for _ in range(5):
t.forward(180)
t.right(144)
turtle.done()
029. 나선 정사각형
다음 「나선 정사각형」 코드에서 명령의 역할 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
length = 10
for _ in range(40):
t.forward(length)
t.left(90)
length += 5
turtle.done()
030. 원형 꽃
다음 「원형 꽃」 코드에서 코드 수정 영향의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.speed(0)
for _ in range(36):
t.circle(80)
t.left(10)
turtle.done()
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. while 정사각 나선
다음 「while 정사각 나선」 코드에서 방향각 해석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
length = 10
while length <= 200:
t.forward(length)
t.left(90)
length += 10
turtle.done()
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. 크기가 다른 사각형
다음 「크기가 다른 사각형」 코드에서 함수 호출 분석의 관점으로 판단할 때 옳은 설명 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. 함수로 정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. 함수로 별
다음 「함수로 별」 코드에서 오류 원인 판별의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
def star(size):
for _ in range(5):
t.forward(size)
t.right(144)
star(150)
turtle.done()
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. 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. 랜덤 색상
다음 「랜덤 색상」 코드에서 변수 변화 추적의 관점으로 판단할 때 옳은 설명 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. 랜덤 워크
다음 「랜덤 워크」 코드에서 일반화 가능성의 관점으로 판단할 때 옳은 설명 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. 좌표축 그리기
다음 「좌표축 그리기」 코드에서 이벤트 흐름의 관점으로 판단할 때 옳은 설명 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. 사인 함수 그래프
다음 「사인 함수 그래프」 코드에서 재귀 종료 분석의 관점으로 판단할 때 옳은 설명 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. 코사인 함수 그래프
다음 「코사인 함수 그래프」 코드에서 백트래킹 분석의 관점으로 판단할 때 옳은 설명 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. 포물선
다음 「포물선」 코드에서 객체 상태 분석의 관점으로 판단할 때 옳은 설명 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. 원의 매개변수 표현
다음 「원의 매개변수 표현」 코드에서 자료구조 처리순서의 관점으로 판단할 때 옳은 설명 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. 나선 곡선
다음 「나선 곡선」 코드에서 시간 흐름 분석의 관점으로 판단할 때 옳은 설명 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. 장미곡선
다음 「장미곡선」 코드에서 그래픽 성능 분석의 관점으로 판단할 때 옳은 설명 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. 함수 반환값 활용
다음 「함수 반환값 활용」 코드에서 기하 변환 분석의 관점으로 판단할 때 옳은 설명 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. 리스트에 꼭짓점 저장
다음 「리스트에 꼭짓점 저장」 코드에서 알고리즘 비교의 관점으로 판단할 때 옳은 설명 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. 리스트 좌표 연결
다음 「리스트 좌표 연결」 코드에서 조건식 해석의 관점으로 판단할 때 옳은 설명 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. 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. 두 거북이
다음 「두 거북이」 코드에서 최종상태 예측의 관점으로 판단할 때 옳은 설명 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. 여러 거북이 리스트
다음 「여러 거북이 리스트」 코드에서 수치 계산의 관점으로 판단할 때 옳은 설명 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. 클릭 위치로 이동
다음 「클릭 위치로 이동」 코드에서 명령의 역할 구분의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
def move(x, y):
t.goto(x, y)
turtle.onscreenclick(move)
turtle.done()
055. 키보드로 전진
다음 「키보드로 전진」 코드에서 코드 수정 영향의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
def move():
t.forward(20)
screen = turtle.Screen()
screen.listen()
screen.onkey(move, "Up")
turtle.done()
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. 화면 클릭 점 찍기
다음 「화면 클릭 점 찍기」 코드에서 방향각 해석의 관점으로 판단할 때 옳은 설명 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. 재귀 전진
다음 「재귀 전진」 코드에서 반복횟수 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
def line(n):
if n == 0:
return
t.forward(20)
line(n - 1)
line(10)
turtle.done()
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. 재귀 별
다음 「재귀 별」 코드에서 자료 흐름 분석의 관점으로 판단할 때 옳은 설명 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. 재귀 나선
다음 「재귀 나선」 코드에서 오류 원인 판별의 관점으로 판단할 때 옳은 설명 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. 재귀 나무
다음 「재귀 나무」 코드에서 출력 위치 구분의 관점으로 판단할 때 옳은 설명 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. 코흐 곡선
다음 「코흐 곡선」 코드에서 도형의 수학적 성질의 관점으로 판단할 때 옳은 설명 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. 코흐 눈송이
다음 「코흐 눈송이」 코드에서 변수 변화 추적의 관점으로 판단할 때 옳은 설명 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. 시에르핀스키 삼각형
다음 「시에르핀스키 삼각형」 코드에서 일반화 가능성의 관점으로 판단할 때 옳은 설명 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. 재귀 원
다음 「재귀 원」 코드에서 이벤트 흐름의 관점으로 판단할 때 옳은 설명 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. 재귀 회전 다각형
다음 「재귀 회전 다각형」 코드에서 재귀 종료 분석의 관점으로 판단할 때 옳은 설명 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. 재귀 피보나치 길이 선
다음 「재귀 피보나치 길이 선」 코드에서 백트래킹 분석의 관점으로 판단할 때 옳은 설명 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. 스택 개념 시각화
다음 「스택 개념 시각화」 코드에서 객체 상태 분석의 관점으로 판단할 때 옳은 설명 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. 큐 개념 시각화
다음 「큐 개념 시각화」 코드에서 자료구조 처리순서의 관점으로 판단할 때 옳은 설명 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. 클래스로 거북이 관리
다음 「클래스로 거북이 관리」 코드에서 시간 흐름 분석의 관점으로 판단할 때 옳은 설명 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. 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. 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. 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. 상속 활용
다음 「상속 활용」 코드에서 조건식 해석의 관점으로 판단할 때 옳은 설명 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. 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. 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. 내접 정사각형 반복
다음 「내접 정사각형 반복」 코드에서 수치 계산의 관점으로 판단할 때 옳은 설명 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. 내접 정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. 재귀 내접 정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. 테오도로스 와선
다음 「테오도로스 와선」 코드에서 좌표 해석의 관점으로 판단할 때 옳은 설명 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. 극좌표 별 나선
다음 「극좌표 별 나선」 코드에서 방향각 해석의 관점으로 판단할 때 옳은 설명 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. 리사주 곡선
다음 「리사주 곡선」 코드에서 반복횟수 분석의 관점으로 판단할 때 옳은 설명 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. 하트 곡선
다음 「하트 곡선」 코드에서 함수 호출 분석의 관점으로 판단할 때 옳은 설명 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. 카디오이드
다음 「카디오이드」 코드에서 자료 흐름 분석의 관점으로 판단할 때 옳은 설명 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. 스피로그래프
다음 「스피로그래프」 코드에서 오류 원인 판별의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
t.speed(0)
for _ in range(72):
t.circle(100)
t.left(5)
turtle.done()
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. 점선 만들기
다음 「점선 만들기」 코드에서 도형의 수학적 성질의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
t = turtle.Turtle()
for _ in range(20):
t.pendown()
t.forward(10)
t.penup()
t.forward(10)
turtle.done()
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. 체스판
다음 「체스판」 코드에서 일반화 가능성의 관점으로 판단할 때 옳은 설명 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. 막대그래프
다음 「막대그래프」 코드에서 이벤트 흐름의 관점으로 판단할 때 옳은 설명 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. 산점도
다음 「산점도」 코드에서 재귀 종료 분석의 관점으로 판단할 때 옳은 설명 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. 간단한 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. 간단한 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. 백트래킹 미로 개념
다음 「백트래킹 미로 개념」 코드에서 자료구조 처리순서의 관점으로 판단할 때 옳은 설명 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. 타이머 애니메이션
다음 「타이머 애니메이션」 코드에서 시간 흐름 분석의 관점으로 판단할 때 옳은 설명 3개를 고르시오.
import turtle
screen = turtle.Screen()
t = turtle.Turtle()
def move():
t.forward(5)
screen.ontimer(move, 50)
move()
turtle.done()
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. 자동 회전 애니메이션
다음 「자동 회전 애니메이션」 코드에서 기하 변환 분석의 관점으로 판단할 때 옳은 설명 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. 간단한 경주
다음 「간단한 경주」 코드에서 알고리즘 비교의 관점으로 판단할 때 옳은 설명 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. 원주 위 점
다음 「원주 위 점」 코드에서 조건식 해석의 관점으로 판단할 때 옳은 설명 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()