실행 흐름
- 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
- 반복해서 사용할 핵심 기능을 함수로 분리합니다.
- 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
- 최종 결과 또는 중간 상태를 화면에 출력합니다.
code.zip에 포함된 전체 예제 · 원본 코드 · 실행 흐름 · 줄별 해설 · 오류 및 개선 포인트
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
if k==1:
return 1
if k==2:
return 2
ans = f(k-1)+f(k-2)
return ans
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | if k==2: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | return 2 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | ans = f(k-1)+f(k-2) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | return ans | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 9 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 10 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 메모이제이션, 함수 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 메모이제이션, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
memo = {1: 1, 2: 2}
def f(k):
if k in memo:
print(memo)
return memo[k]
memo[k] = f(k-1) + f(k-2)
return memo[k]
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | memo = {1: 1, 2: 2} | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 4 | if k in memo: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | print(memo) | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 6 | return memo[k] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | memo[k] = f(k-1) + f(k-2) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | return memo[k] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 10 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 11 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수 개념을 중심으로, 함수 f을(를) 정의하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f():
print("Hello")
f()
print("World")
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | print("Hello") | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 4 | f() | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 5 | print("World") | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수 개념을 중심으로, 함수 f을(를) 정의하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f():
print("Hello")
return
print("World")
f()
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | print("Hello") | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 3 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | print("World") | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 6 | f() | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수 개념을 중심으로, 함수 f을(를) 정의하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f():
return 3
print(f())
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | return 3 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | print(f()) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수 개념을 중심으로, 함수 f을(를) 정의하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(n):
print(n)
f(3)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(n): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | print(n) | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 4 | f(3) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수 개념을 중심으로, 함수 f을(를) 정의하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(a, b):
return a+b
print(f(3, 5))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(a, b): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | return a+b | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | print(f(3, 5)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(a, b):
if a<b:
return a
else:
return b
print(f(3, 5))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(a, b): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if a<b: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return a | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | else: | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 5 | return b | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | print(f(3, 5)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(n):
k = 0
while k<n:
k = k+1
print(k)
f(3)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(n): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | k = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | while k<n: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 4 | k = k+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | print(k) | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 7 | f(3) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(n):
k = 0
s = 0
while k<n:
k = k+1
s = k+k
return s
print(f(3))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(n): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | k = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | s = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | while k<n: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 5 | k = k+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | s = k+k | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | return s | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 9 | print(f(3)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
s = 0
def f(n):
global s
k = 0
while k<n:
k = k+1
s = s+k
f(3)
print(s)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | s = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | def f(n): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 3 | global s | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 4 | k = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | while k<n: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 6 | k = k+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | s = s+k | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | f(3) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 10 | print(s) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(n):
s = 0
for k in range(1, n+1):
s = s+k
return s
n = input()
n = int(n)
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(n): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | s = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | for k in range(1, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | s = s+k | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | return s | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | n = input() | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 8 | n = int(n) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
s = 0
for i in range(1, k+1):
s = s+i
return s
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | s = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | for i in range(1, k+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | s = s+i | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | return s | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 8 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
if k==1:
return 1
return f(k-1)+k
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | return f(k-1)+k | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 7 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
if k<1:
return
f(k-1)
print(k)
n = int(input())
f(n)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k<1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | f(k-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 6 | print(k) | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 8 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 9 | f(n) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
if k<1:
return
print(k)
f(k-1)
n = int(input())
f(n)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k<1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | print(k) | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 6 | f(k-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 9 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 10 | f(n) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
if k==0:
return
f(k-1)
print('*', end='')
n = int(input())
f(n)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | f(k-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 6 | print('*', end='') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 9 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 10 | f(n) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
n = 0
def f():
global n
if n==0:
return
print('*', end='')
n =n-1
f()
n = int(input())
f()
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | n = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | def f(): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 4 | global n | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 5 | if n==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | print('*', end='') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 9 | n =n-1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | f() | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 13 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 14 | f() | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
if k==0:
return 0
if k==1:
return 1
return f(k-2)+f(k-1)
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | if k==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | return f(k-2)+f(k-1) | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 10 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 11 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
for i in range(1, k+1):
for j in range(1, i+1):
print('*', end='')
print('')
n = int(input())
f(n)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | for i in range(1, k+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 3 | for j in range(1, i+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | print('*', end='') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 5 | print('') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 7 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 8 | f(n) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 g, f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def g(k):
if k>=1:
g(k-1)
print('*', end='')
def f(k):
if k>=1:
f(k-1)
g(k)
print('')
n = int(input())
f(n)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def g(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k>=1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | g(k-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 4 | print('*', end='') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 6 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 7 | if k>=1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 8 | f(k-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 9 | g(k) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 10 | print('') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 12 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 13 | f(n) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 g, f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
n = 0
def g(k):
if k>=1:
print('*', end='')
g(k-1)
def f(k):
if k<=n:
g(k)
print('')
f(k+1)
n = int(input())
f(1)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | n = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | def g(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 4 | if k>=1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | print('*', end='') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 6 | g(k-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 8 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 9 | if k<=n: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 10 | g(k) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 11 | print('') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 12 | f(k+1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 14 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 15 | f(1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(a, b):
if a==0:
return b
return f(b%a, a)
n, m = input().split()
n = int(n)
m = int(m)
print(f(n, m))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(a, b): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if a==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return b | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | return f(b%a, a) | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | n, m = input().split() | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 8 | n = int(n) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | m = int(m) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | print(f(n, m)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
if k<2:
print(k, end='')
return
f(k//2)
print(k%2, end='')
n = int(input())
f(n)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k<2: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | print(k, end='') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 4 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | f(k//2) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 7 | print(k%2, end='') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 9 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 10 | f(n) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 4개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(n, r):
if n==r:
return 1
if r == 1:
return n
if n<r:
return 0
if r==0:
return 1
return f(n-1, r)+f(n-1,r-1)
a, b = input().split()
a = int(a)
b = int(b)
print(f(a, b))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(n, r): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if n==r: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | if r == 1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | return n | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | if n<r: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | if r==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 11 | return f(n-1, r)+f(n-1,r-1) | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 13 | a, b = input().split() | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 14 | a = int(a) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 15 | b = int(b) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 16 | print(f(a, b)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(n, s, t, w):
if n>=1:
f(n-1, s, w, t)
print(n, s, t)
f(n-1, w, t, s)
n, START, TO, WITH = input().split()
n = int(n)
f(n, START, TO, WITH)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(n, s, t, w): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if n>=1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | f(n-1, s, w, t) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 4 | print(n, s, t) | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 5 | f(n-1, w, t, s) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 7 | n, START, TO, WITH = input().split() | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 8 | n = int(n) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | f(n, START, TO, WITH) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 p1, p2을(를) 정의하고 반복 구조 2개를 사용하고 조건 분기 7개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def p1(k): # p1이 k부터 부를 수 있을 때 p1이 이기는가?
if k == 31: # 31을 불러야만 한다면 진다.
return True
else: # 상대방에게 넘겨 주는 모든 경우에서
for i in range(1, 4):
if k + i <= 31:
if not p2(k + i): # 상대방이 질 경우 내가 이긴다.
return True
return False
def p2(k): # p2가 k부터 부를 수 있을 때 p2가 이기는가?
if k == 31: # 31을 불러야만 한다면 진다.
return True
else: # 상대방에게 넘겨 주는 모든 경우에서
for i in range(1, 4):
if k + i <= 31:
if not p1(k + i): # 상대방이 질 경우 내가 이긴다.
return True
return False
n = int(input())
if p1(n): # p1이 승리
print(1)
else: # p2가 승리
print(2)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def p1(k): # p1이 k부터 부를 수 있을 때 p1이 이기는가? | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k == 31: # 31을 불러야만 한다면 진다. | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return True | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | else: # 상대방에게 넘겨 주는 모든 경우에서 | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 5 | for i in range(1, 4): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 6 | if k + i <= 31: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | if not p2(k + i): # 상대방이 질 경우 내가 이긴다. | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 8 | return True | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 9 | return False | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 12 | def p2(k): # p2가 k부터 부를 수 있을 때 p2가 이기는가? | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 13 | if k == 31: # 31을 불러야만 한다면 진다. | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 14 | return True | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 15 | else: # 상대방에게 넘겨 주는 모든 경우에서 | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 16 | for i in range(1, 4): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 17 | if k + i <= 31: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 18 | if not p1(k + i): # 상대방이 질 경우 내가 이긴다. | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 19 | return True | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 20 | return False | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 23 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 24 | if p1(n): # p1이 승리 | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 25 | print(1) | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 26 | else: # p2가 승리 | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 27 | print(2) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 터틀 그래픽, 함수 개념을 중심으로, 함수 tree을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 터틀 그래픽, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
from turtle import *
speed(0)
colormode(255)
def tree(length, depth):
if depth>0:
pensize(depth//0.4+1)
pencolor(0, 255//depth, 0)
forward(length)
right(23)
tree(length*0.8, depth-1)
left(23)
left(23)
tree(length*0.8, depth-1)
right(23)
backward(length)
pensize(depth//0.4+1)
pencolor(0, 255//depth, 0)
left(90)
tree(90, 8)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | from turtle import * | 특정 모듈에서 필요한 기능만 선택하여 불러옵니다. |
| 3 | speed(0) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 4 | colormode(255) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 6 | def tree(length, depth): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 7 | if depth>0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 8 | pensize(depth//0.4+1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 9 | pencolor(0, 255//depth, 0) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 11 | forward(length) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 13 | right(23) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 14 | tree(length*0.8, depth-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 15 | left(23) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 17 | left(23) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 18 | tree(length*0.8, depth-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 19 | right(23) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 21 | backward(length) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 23 | pensize(depth//0.4+1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 24 | pencolor(0, 255//depth, 0) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 26 | left(90) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 27 | tree(90, 8) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 push, pop을(를) 정의하고 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
queue = []
def push(x):
queue.append(x)
def pop():
return queue.pop(0)
for i in range(1, 6):
push(i)
for i in range(1, 6):
print(pop())
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | queue = [] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | def push(x): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 3 | queue.append(x) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 4 | def pop(): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 5 | return queue.pop(0) | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | for i in range(1, 6): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 8 | push(i) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 9 | for i in range(1, 6): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 10 | print(pop()) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 push, pop을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
a=[1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0] #1은 삽입, 0은 삭제를 의미함.
queue = []
def push(x):
queue.append(x)
def pop():
return queue.pop(0)
id = 1
st = 1
for i in a:
print(st, "단계 -", end=' ')
if i == 1:
print("고객", id, "대기 번호 발급", end=' ')
push(id)
id += 1
else:
print("고객", pop(), "업무 완료 귀가", end=' ')
print("(대기 인원 =", len(queue), ")")
st += 1
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | a=[1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0] #1은 삽입, 0은 삭제를 의미함. | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | queue = [] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | def push(x): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 5 | queue.append(x) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 7 | def pop(): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 8 | return queue.pop(0) | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 10 | id = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 11 | st = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 13 | for i in a: | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 14 | print(st, "단계 -", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 15 | if i == 1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 16 | print("고객", id, "대기 번호 발급", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 17 | push(id) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 18 | id += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 19 | else: | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 20 | print("고객", pop(), "업무 완료 귀가", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 21 | print("(대기 인원 =", len(queue), ")") | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 22 | st += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
큐·너비 우선 탐색, 반복문 개념을 중심으로, 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 큐·너비 우선 탐색, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
import queue
q = queue.Queue()
for i in range(1, 6):
q.put(i)
while not q.empty():
print(q.get())
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | import queue | queue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다. |
| 2 | q = queue.Queue() | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | for i in range(1, 6): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | q.put(i) | 큐 또는 스택 자료구조에 값을 삽입합니다. |
| 5 | while not q.empty(): | 조건이 참인 동안 같은 작업을 반복합니다. |
| 6 | print(q.get()) | 계산 결과나 진행 상태를 화면에 출력합니다. |
큐·너비 우선 탐색, 조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 큐·너비 우선 탐색, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
import queue
a=[1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0] #1은 삽입, 0은 삭제를 의미
q = queue.Queue()
id = 1
st = 1
mx = 0
for i in a:
print(st, "단계 -", end=' ')
if i == 1:
print("고객", id, "대기 번호 발급", end=' ')
q.put(id)
id += 1
else:
print("고객", q.get(), "업무 완료 귀가", end=' ')
print("(대기 인원 =", q.qsize(), ")")
mx = max(mx, q.qsize())
st += 1
print("최대 대기 인원수 =", mx)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | import queue | queue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다. |
| 3 | a=[1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0] #1은 삽입, 0은 삭제를 의미 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | q = queue.Queue() | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | id = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | st = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | mx = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | for i in a: | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 11 | print(st, "단계 -", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 12 | if i == 1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 13 | print("고객", id, "대기 번호 발급", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 14 | q.put(id) | 큐 또는 스택 자료구조에 값을 삽입합니다. |
| 15 | id += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 16 | else: | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 17 | print("고객", q.get(), "업무 완료 귀가", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 18 | print("(대기 인원 =", q.qsize(), ")") | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 19 | mx = max(mx, q.qsize()) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 20 | st += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 22 | print("최대 대기 인원수 =", mx) | 계산 결과나 진행 상태를 화면에 출력합니다. |
문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 4개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
s = [0] * 9
for i in range(3):
s[i * 3], s[i * 3 + 1], s[i * 3 + 2] = map(int, input().split())
for j in range(3):
if s[i * 3 + j] == 0:
pos = i * 3 + j
if pos > 2:
s[pos], s[pos - 3] = s[pos - 3], s[pos]
for i in range(3):
for j in range(3):
print(s[i * 3 + j], end=' ')
print()
print()
else:
print("Impossible\n")
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | s = [0] * 9 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | for i in range(3): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 3 | s[i * 3], s[i * 3 + 1], s[i * 3 + 2] = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 4 | for j in range(3): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | if s[i * 3 + j] == 0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | pos = i * 3 + j | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | if pos > 2: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | s[pos], s[pos - 3] = s[pos - 3], s[pos] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | for i in range(3): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 11 | for j in range(3): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 12 | print(s[i * 3 + j], end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 13 | print() | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 14 | print() | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 15 | else: | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 16 | print("Impossible\n") | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 스택, 함수 개념을 중심으로, 함수 push, pop을(를) 정의하고 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 스택, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
stack = []
def push(x):
stack.append(x)
def pop():
return stack.pop()
for i in range(1, 6):
push(i)
for i in range(1, 6):
print(pop())
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | stack = [] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | def push(x): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 3 | stack.append(x) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 4 | def pop(): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 5 | return stack.pop() | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | for i in range(1, 6): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 7 | push(i) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 8 | for i in range(1, 6): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 9 | print(pop()) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 스택, 함수 개념을 중심으로, 함수 push, pop을(를) 정의하고 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 스택, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
stack = []
goal = [2, 1, 3, 4]
def push(x):
stack.append(x)
def pop():
return stack.pop()
now = 0
for i in range(1, 5):
push(i)
print("삽입", end=' ')
while len(stack) > 0 and stack[-1] == goal[now]:
pop()
print("삭제", end=' ')
now += 1
while len(stack) > 0:
print("삭제", end=' ')
pop()
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | stack = [] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | goal = [2, 1, 3, 4] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | def push(x): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 5 | stack.append(x) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 7 | def pop(): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 8 | return stack.pop() | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 10 | now = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 12 | for i in range(1, 5): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 13 | push(i) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 14 | print("삽입", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 15 | while len(stack) > 0 and stack[-1] == goal[now]: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 16 | pop() | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 17 | print("삭제", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 18 | now += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 20 | while len(stack) > 0: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 21 | print("삭제", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 22 | pop() | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
스택, 반복문 개념을 중심으로, 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 스택, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
import queue
s = queue.LifoQueue()
for i in range(1, 6):
s.put(i)
while not s.empty():
print(s.get())
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | import queue | queue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다. |
| 2 | s = queue.LifoQueue() | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | for i in range(1, 6): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | s.put(i) | 큐 또는 스택 자료구조에 값을 삽입합니다. |
| 5 | while not s.empty(): | 조건이 참인 동안 같은 작업을 반복합니다. |
| 6 | print(s.get()) | 계산 결과나 진행 상태를 화면에 출력합니다. |
스택, 반복문 개념을 중심으로, 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 스택, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
import queue
goal = [2, 1, 4, 3]
s = queue.LifoQueue() # LifoQueue는 후입 선출이므로 스택
now = 0
for i in range(1, 5):
s.put(i)
print("삽입", end=' ')
while not s.empty() and s.queue[-1] == goal[now]:
s.get()
print("삭제", end=' ')
now += 1
while not s.empty():
s.get()
print("삭제", end=' ')
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | import queue | queue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다. |
| 3 | goal = [2, 1, 4, 3] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | s = queue.LifoQueue() # LifoQueue는 후입 선출이므로 스택 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | now = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | for i in range(1, 5): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 8 | s.put(i) | 큐 또는 스택 자료구조에 값을 삽입합니다. |
| 9 | print("삽입", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 10 | while not s.empty() and s.queue[-1] == goal[now]: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 11 | s.get() | 큐 또는 스택에서 다음 값을 꺼냅니다. |
| 12 | print("삭제", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 13 | now += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 15 | while not s.empty(): | 조건이 참인 동안 같은 작업을 반복합니다. |
| 16 | s.get() | 큐 또는 스택에서 다음 값을 꺼냅니다. |
| 17 | print("삭제", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
스택, 조건문, 반복문 개념을 중심으로, 반복 구조 3개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 스택, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
import queue
op = "+-*/"
eq = input()
s = queue.LifoQueue()
for i in eq:
if i in op: # 연산자일 경우
if not s.empty():
top = s.get()
s.put(top)
while not s.empty() and op.find(i) // 2 <= op.find(top) // 2:
print(top, end=' ')
s.get()
if not s.empty():
top = s.get()
s.put(top)
s.put(i)
else: # 피연산자일 경우
print(i, end=' ')
while not s.empty():
print(s.get(), end=' ')
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | import queue | queue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다. |
| 3 | op = "+-*/" | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | eq = input() | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 5 | s = queue.LifoQueue() | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | for i in eq: | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 8 | if i in op: # 연산자일 경우 | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | if not s.empty(): | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 10 | top = s.get() | 큐 또는 스택에서 다음 값을 꺼냅니다. |
| 11 | s.put(top) | 큐 또는 스택 자료구조에 값을 삽입합니다. |
| 12 | while not s.empty() and op.find(i) // 2 <= op.find(top) // 2: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 13 | print(top, end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 14 | s.get() | 큐 또는 스택에서 다음 값을 꺼냅니다. |
| 15 | if not s.empty(): | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 16 | top = s.get() | 큐 또는 스택에서 다음 값을 꺼냅니다. |
| 17 | s.put(top) | 큐 또는 스택 자료구조에 값을 삽입합니다. |
| 18 | s.put(i) | 큐 또는 스택 자료구조에 값을 삽입합니다. |
| 19 | else: # 피연산자일 경우 | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 20 | print(i, end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 22 | while not s.empty(): | 조건이 참인 동안 같은 작업을 반복합니다. |
| 23 | print(s.get(), end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 큐·너비 우선 탐색, 문자열 처리 개념을 중심으로, 함수 solve을(를) 정의하고 반복 구조 3개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 큐·너비 우선 탐색, 문자열 처리, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
import queue
# 이동 방향 정의 (상, 하, 좌, 우)
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
# 목표 상태 (퍼즐 완료 상태)
target = '123456780'
# 방문 기록 저장
chk = set()
def solve(start):
q = queue.Queue()
q.put((start, 0)) # 초기 상태와 이동 횟수
chk.add(start)
while not q.empty():
cur, cnt = q.get()
# 목표 상태에 도달하면 이동 횟수 반환
if cur == target:
return cnt
# '0'의 위치를 찾기 (빈 칸)
z = cur.index('0')
x = z // 3 # 행
y = z % 3 # 열
# 네 방향 탐색
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
# 3x3 퍼즐 범위 안인지 확인
if 0 <= nx < 3 and 0 <= ny < 3:
nz = nx * 3 + ny # 이동할 위치의 인덱스 계산
new = list(cur) # 문자열을 리스트로 변환 (mutable)
new[z], new[nz] = new[nz], new[z] # 빈 칸과 위치 교환
new_str = ''.join(new) # 리스트를 문자열로 변환
# 방문하지 않은 상태라면 큐에 추가
if new_str not in chk:
chk.add(new_str)
q.put((new_str, cnt + 1))
# 목표 상태에 도달할 수 없는 경우
return -1
# 초기 상태 입력 받기
start = ''
for _ in range(3):
start += ''.join(input().split())
# 결과 출력
print(solve(start))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | import queue | queue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다. |
| 3 | # 이동 방향 정의 (상, 하, 좌, 우) | 프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다. |
| 4 | dx = [-1, 1, 0, 0] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | dy = [0, 0, -1, 1] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | # 목표 상태 (퍼즐 완료 상태) | 프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다. |
| 8 | target = '123456780' | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | # 방문 기록 저장 | 프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다. |
| 11 | chk = set() | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 13 | def solve(start): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 14 | q = queue.Queue() | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 15 | q.put((start, 0)) # 초기 상태와 이동 횟수 | 큐 또는 스택 자료구조에 값을 삽입합니다. |
| 16 | chk.add(start) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 18 | while not q.empty(): | 조건이 참인 동안 같은 작업을 반복합니다. |
| 19 | cur, cnt = q.get() | 큐 또는 스택에서 다음 값을 꺼냅니다. |
| 20 | # 목표 상태에 도달하면 이동 횟수 반환 | 프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다. |
| 21 | if cur == target: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 22 | return cnt | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 24 | # '0'의 위치를 찾기 (빈 칸) | 프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다. |
| 25 | z = cur.index('0') | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 26 | x = z // 3 # 행 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 27 | y = z % 3 # 열 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 29 | # 네 방향 탐색 | 프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다. |
| 30 | for i in range(4): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 31 | nx = x + dx[i] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 32 | ny = y + dy[i] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 33 | # 3x3 퍼즐 범위 안인지 확인 | 프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다. |
| 34 | if 0 <= nx < 3 and 0 <= ny < 3: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 35 | nz = nx * 3 + ny # 이동할 위치의 인덱스 계산 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 36 | new = list(cur) # 문자열을 리스트로 변환 (mutable) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 37 | new[z], new[nz] = new[nz], new[z] # 빈 칸과 위치 교환 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 38 | new_str = ''.join(new) # 리스트를 문자열로 변환 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 40 | # 방문하지 않은 상태라면 큐에 추가 | 프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다. |
| 41 | if new_str not in chk: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 42 | chk.add(new_str) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 43 | q.put((new_str, cnt + 1)) | 큐 또는 스택 자료구조에 값을 삽입합니다. |
| 45 | # 목표 상태에 도달할 수 없는 경우 | 프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다. |
| 46 | return -1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 48 | # 초기 상태 입력 받기 | 프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다. |
| 49 | start = '' | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 50 | for _ in range(3): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 51 | start += ''.join(input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 53 | # 결과 출력 | 프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다. |
| 54 | print(solve(start)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
그래프, 2차원 리스트, 문자열 처리 개념을 중심으로, 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 그래프, 2차원 리스트, 문자열 처리, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
Adj = [[0]*7 for _ in range(7)]
V, E = map(int, input().split())
for i in range(E):
u, v = map(int, input().split())
Adj[u][v] = Adj[v][u] = 1
for i in range(1, 7):
for j in range(1, 7):
print(Adj[i][j], end=' ')
print()
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | Adj = [[0]*7 for _ in range(7)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | V, E = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 4 | for i in range(E): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | u, v = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 6 | Adj[u][v] = Adj[v][u] = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | for i in range(1, 7): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 9 | for j in range(1, 7): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 10 | print(Adj[i][j], end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 11 | print() | 계산 결과나 진행 상태를 화면에 출력합니다. |
그래프, 2차원 리스트, 문자열 처리 개념을 중심으로, 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 그래프, 2차원 리스트, 문자열 처리, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
Adj = [[] for _ in range(7)]
V, E = map(int, input().split())
for i in range(E):
u, v = map(int, input().split())
Adj[u].append(v)
Adj[v].append(u)
for i in range(1, 7):
print(i, end=':')
for j in Adj[i]:
print(j, end=' ')
print()
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | Adj = [[] for _ in range(7)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | V, E = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 4 | for i in range(E): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | u, v = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 6 | Adj[u].append(v) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 7 | Adj[v].append(u) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 9 | for i in range(1, 7): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 10 | print(i, end=':') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 11 | for j in Adj[i]: | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 12 | print(j, end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 13 | print() | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 그래프, 2차원 리스트 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 4개를 사용하고 조건 분기 5개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 그래프, 2차원 리스트, 문자열 처리 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
M=[[] for _ in range(11)]
visited=[0]*11
visited = [0 for i in range(11)]
ok = False
V, E = map(int, input().split())
for i in range(E):
u, v = map(int, input().split())
M[u].append(v)
M[v].append(u)
def f(x, y, z):
global V, visited, ok
if ok: return
if y == V:
ok = True
for i in z:
print(i, end=' ')
return
visited[x] = True
for u in M[x]:
if visited[u] == False:
z.append(u)
f(u, y+1, z)
z.pop()
visited[x] = False
return
for v in range(0, V+1):
f(v, 1, [v])
if ok : break
if ok != True: print("Impossible")
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | M=[[] for _ in range(11)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | visited=[0]*11 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | visited = [0 for i in range(11)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | ok = False | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | V, E = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 7 | for i in range(E): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 8 | u, v = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 9 | M[u].append(v) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 10 | M[v].append(u) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 12 | def f(x, y, z): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 13 | global V, visited, ok | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 14 | if ok: return | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 15 | if y == V: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 16 | ok = True | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 17 | for i in z: | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 18 | print(i, end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 19 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 20 | visited[x] = True | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 21 | for u in M[x]: | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 22 | if visited[u] == False: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 23 | z.append(u) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 24 | f(u, y+1, z) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 25 | z.pop() | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 26 | visited[x] = False | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 27 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 29 | for v in range(0, V+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 30 | f(v, 1, [v]) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 31 | if ok : break | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 33 | if ok != True: print("Impossible") | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
그래프, 2차원 리스트, 문자열 처리 개념을 중심으로, 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 그래프, 2차원 리스트, 문자열 처리, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
Adj=[[0]*10 for _ in range(10)]
V = int(input())
for i in range(V-1):
u, v = map(int, input().split())
Adj[u][v] = 1
for i in range(1, V+1):
for j in range(1, V+1):
print(Adj[i][j], end=' ')
print()
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | Adj=[[0]*10 for _ in range(10)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | V = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 4 | for i in range(V-1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | u, v = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 6 | Adj[u][v] = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | for i in range(1, V+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 9 | for j in range(1, V+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 10 | print(Adj[i][j], end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 11 | print() | 계산 결과나 진행 상태를 화면에 출력합니다. |
그래프, 2차원 리스트, 문자열 처리 개념을 중심으로, 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 그래프, 2차원 리스트, 문자열 처리, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
Adj = [[] for _ in range(7)]
V = int(input())
for i in range(V-1):
u, v = map(int, input().split())
Adj[u].append(v)
for i in range(1, V+1):
print(i, end=":")
for j in Adj[i]:
print(j, end=' ')
print()
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | Adj = [[] for _ in range(7)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | V = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 4 | for i in range(V-1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | u, v = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 6 | Adj[u].append(v) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 8 | for i in range(1, V+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 9 | print(i, end=":") | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 10 | for j in Adj[i]: | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 11 | print(j, end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 12 | print() | 계산 결과나 진행 상태를 화면에 출력합니다. |
딕셔너리, 문자열 처리, 조건문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 딕셔너리, 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
T = dict()
S = input()
a, b = map(str, input().split())
p = 0
ans = 0
for i in S:
if i != "-":
T[i] = p
p+=1
while T[a] != T[b]:
if T[a] > T[b]:
a = S[T[a]//2]
else:
b = S[T[b]//2]
ans += 1
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | T = dict() | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | S = input() | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | a, b = map(str, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 5 | p = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | for i in S: | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 8 | if i != "-": | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | T[i] = p | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | p+=1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 12 | while T[a] != T[b]: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 13 | if T[a] > T[b]: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 14 | a = S[T[a]//2] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 15 | else: | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 16 | b = S[T[b]//2] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 17 | ans += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 19 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
딕셔너리, 문자열 처리, 조건문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 딕셔너리, 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
T = dict()
S = input()
a, b = map(str, input().split())
p = 0
ans = 0
for i in S:
if i != "-":
T[i] = p
p+=1
while T[a] != T[b]:
if T[a] > T[b]:
a = S[T[a]//2]
else:
b = S[T[b]//2]
ans += 1
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | T = dict() | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | S = input() | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | a, b = map(str, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 5 | p = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | for i in S: | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 8 | if i != "-": | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | T[i] = p | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | p+=1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 12 | while T[a] != T[b]: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 13 | if T[a] > T[b]: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 14 | a = S[T[a]//2] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 15 | else: | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 16 | b = S[T[b]//2] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 17 | ans += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 19 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 그래프, 2차원 리스트 개념을 중심으로, 함수 getLCA을(를) 정의하고 반복 구조 2개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 그래프, 2차원 리스트, 문자열 처리 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def getLCA(x, y):
if T[x] == T[y]:
return 0
if T[x] > T[y] :
return getLCA(P[x], y)+1
else :
return getLCA(x, P[y])+1
T = [[] for _ in range(num_Nodes)]
P = [] * num_Nodes
V, E = map(int, input().split())
for i in range(E):
u, v = map(int, input().split())
T[u-1].append(v)
P[u-1] = v-1
a, b = map(str, input().split())
p, ans = 0, 0
for i in S:
if i != '-': T[i] = p
p+=1
print(getLCA(a, b))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def getLCA(x, y): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if T[x] == T[y]: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | if T[x] > T[y] : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | return getLCA(P[x], y)+1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | else : | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 7 | return getLCA(x, P[y])+1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | T = [[] for _ in range(num_Nodes)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | P = [] * num_Nodes | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | V, E = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 11 | for i in range(E): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 12 | u, v = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 13 | T[u-1].append(v) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 14 | P[u-1] = v-1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 16 | a, b = map(str, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 17 | p, ans = 0, 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 18 | for i in S: | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 19 | if i != '-': T[i] = p | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 20 | p+=1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 21 | print(getLCA(a, b)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 그래프, 2차원 리스트 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 3개를 사용하고 조건 분기 4개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 그래프, 2차원 리스트, 문자열 처리 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(x, y, z, d):
global V, visited, ok, ans
if ok : return
if y == V :
if ans > d : ans = d
return
visited[x] = True
for u, w in M[x]:
if visited[u] == False:
z.append(u)
f(u, y+1, z, d+w)
z.pop()
visited[x] = False
return
M = [[] for i in range(11)]
ans = 123456789987654321
visited = [0 for i in range(11)]
ok = False
V, E = map(int, input().split())
for i in range(E):
u, v, w = map(int, input().split())
M[u].append((v,w))
M[v].append((u,w))
for v in range(0, V+1):
f(v, 1, [v], 0)
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(x, y, z, d): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | global V, visited, ok, ans | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 3 | if ok : return | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 4 | if y == V : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | if ans > d : ans = d | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | visited[x] = True | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | for u, w in M[x]: | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 9 | if visited[u] == False: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 10 | z.append(u) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 11 | f(u, y+1, z, d+w) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 12 | z.pop() | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 13 | visited[x] = False | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 14 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 16 | M = [[] for i in range(11)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 17 | ans = 123456789987654321 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 18 | visited = [0 for i in range(11)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 19 | ok = False | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 20 | V, E = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 21 | for i in range(E): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 22 | u, v, w = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 23 | M[u].append((v,w)) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 24 | M[v].append((u,w)) | 리스트의 끝에 새로운 원소를 추가합니다. |
| 25 | for v in range(0, V+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 26 | f(v, 1, [v], 0) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 27 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 square을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def square():
ans = 0
for i in range(10):
ans = ans + 10
return ans
print(square())
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def square(): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | for i in range(10): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | ans = ans + 10 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | return ans | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | print(square()) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 square을(를) 정의하고 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def square():
ans = 0
for i in range(10):
for j in range(10):
ans = ans + 1
return ans
print(square())
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def square(): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | for i in range(10): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | for j in range(10): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | ans = ans + 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | return ans | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | print(square()) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 square을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def square(n):
ans = 0
for i in range(n):
ans = ans + n
return ans
print(square(10))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def square(n): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | for i in range(n): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | ans = ans + n | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | return ans | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | print(square(10)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 square을(를) 정의하고 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def square(n):
ans = 0
for i in range(n):
for j in range(n):
ans = ans + 1
return ans
print(square(10))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def square(n): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | for i in range(n): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | for j in range(n): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | ans = ans + 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | return ans | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | print(square(10)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(n):
f1 = 1
f2 = 1
for i in range(3, n+1):
f_temp = f1 +f2
f1 = f2
f2 = f_temp
return f2
print(f(10))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(n): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | f1 = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | f2 = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | for i in range(3, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | f_temp = f1 +f2 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | f1 = f2 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | f2 = f_temp | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | return f2 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 10 | print(f(10)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = list(map(int, input().split()))
for i in range(1, len(data)):
for j in range(i, 0, -1):
if data[j] < data[j-1]:
temp = data[j]
data[j] = data[j-1]
data[j-1] = temp
print(data)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = list(map(int, input().split())) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | for i in range(1, len(data)): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | for j in range(i, 0, -1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | if data[j] < data[j-1]: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | temp = data[j] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | data[j] = data[j-1] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | data[j-1] = temp | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | print(data) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 3개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(start, end): #log n번 호출
if start>=end:
return
pivot = start
left = start+1
right = end
while left<=right:
while left<=end and data[left]<=data[pivot]:
left = left+1
while right>start and data[right]>=data[pivot]:
right = right-1
if left>right:
data[right], data[pivot] = data[pivot], data[right]
else:
data[left], data[right] = data[right], data[left]
f(start, right-1)
f(right+1, end)
data = list(map(int, input().split()))
f(0,len(data)-1)
print(data)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(start, end): #log n번 호출 | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if start>=end: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | pivot = start | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | left = start+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | right = end | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | while left<=right: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 8 | while left<=end and data[left]<=data[pivot]: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 9 | left = left+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | while right>start and data[right]>=data[pivot]: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 11 | right = right-1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 12 | if left>right: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 13 | data[right], data[pivot] = data[pivot], data[right] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 14 | else: | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 15 | data[left], data[right] = data[right], data[left] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 16 | f(start, right-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 17 | f(right+1, end) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 19 | data = list(map(int, input().split())) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 20 | f(0,len(data)-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 21 | print(data) | 계산 결과나 진행 상태를 화면에 출력합니다. |
조건문, 반복문 개념을 중심으로, 반복 구조 3개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 0
n = int(input())
for i in range(1,n+1):
for j in range(i,n+1):
for k in range(j,n+1):
if i+j+k == n and k<(i+j):
ans += 1
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | for i in range(1,n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | for j in range(i,n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | for k in range(j,n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 6 | if i+j+k == n and k<(i+j): | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | ans += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 8 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
조건문, 반복문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 0
n = int(input())
for i in range(1,n+1):
for j in range(i,n+1):
k = n-i-j
if k < (i+j) and k>=j:
ans += 1
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | for i in range(1,n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | for j in range(i,n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | k = n-i-j | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | if k < (i+j) and k>=j: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | ans += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 8 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 0
n = int(input())
for i in range((n+1)//3, (n+1)//2):
ans = ans+(i-(n-i+1)//2+1)
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | for i in range((n+1)//3, (n+1)//2): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | ans = ans+(i-(n-i+1)//2+1) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 0
n = int(input())
for i in range(1, n+1):
if (n%i)==0:
ans = ans+i
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | for i in range(1, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | if (n%i)==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | ans = ans+i | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
n = int(input())
data = list(map(int,input().split()))
ans = 0
for i in range(n):
if (data[i]%2)==1: #i번째 값이 홀수인지 판단
ans = ans+1
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 2 | data = list(map(int,input().split())) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | for i in range(n): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 6 | if (data[i]%2)==1: #i번째 값이 홀수인지 판단 | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | ans = ans+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(n):
if n==0:
return 1
cnt = 0
for i in range(n):
cnt = cnt+f(i)
return cnt
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(n): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if n==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | cnt = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | for i in range(n): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 6 | cnt = cnt+f(i) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | return cnt | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 9 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 0
def f(c):
if c==n:
global ans
ans = ans+1
return
if c>n:
return
f(c+1)
f(c+2)
n = int(input())
f(0)
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | def f(c): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 3 | if c==n: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 4 | global ans | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 5 | ans = ans+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | if c>n: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 8 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 9 | f(c+1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 10 | f(c+2) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 12 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 13 | f(0) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 14 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
조건문, 반복문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 0
n = int(input())
for i in range(2, n+1):
cnt = 0
for j in range(2, i):
if (i%j)==0:
cnt = 1
if cnt==0:
ans = ans+1
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | for i in range(2, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | cnt = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | for j in range(2, i): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 6 | if (i%j)==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | cnt = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | if cnt==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | ans = ans+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
import math
n, k = map(int, input().split())
ans = 0
for i in range(1, n+1):
if math.gcd(i, k)==1:
ans = ans+1
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | import math | math 모듈을 불러와 관련 기능을 사용할 수 있게 합니다. |
| 2 | n, k = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | for i in range(1, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | if math.gcd(i, k)==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | ans = ans+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
A = [0, 1, 3, 6, 7, 11, 15, 18]
ans = 0
def f(k, s, j):
if j==3:
if (s%3)==0:
global ans
ans = max(ans, s)
return
for i in range(k+1, 8):
f(i,s+A[i], j+1)
return
f(0,0,0)
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | A = [0, 1, 3, 6, 7, 11, 15, 18] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | def f(k, s, j): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 4 | if j==3: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | if (s%3)==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | global ans | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 7 | ans = max(ans, s) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 10 | for i in range(k+1, 8): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 11 | f(i,s+A[i], j+1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 12 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 14 | f(0,0,0) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 15 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
함수, 조건문, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
A = [0, 1, 3, 6, 7, 11, 15, 18]
ans = 0
def f(k, s, j) :
if j==3:
if (s%3)==0:
global ans
ans = ans+1
print(s)
return
for i in range(k+1, 8):
f(i, s+A[i], j+1)
return
f(0, 0, 0)
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | A = [0, 1, 3, 6, 7, 11, 15, 18] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | def f(k, s, j) : | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 4 | if j==3: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | if (s%3)==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | global ans | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 7 | ans = ans+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | print(s) | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 9 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 11 | for i in range(k+1, 8): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 12 | f(i, s+A[i], j+1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 13 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 15 | f(0, 0, 0) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 16 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
조건문, 반복문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 0
n = int(input())
for i in range(2, n+1):
cnt = 0
for j in range(2, int(i**(1/2))+1):
if (i%j)==0:
cnt = 1
if cnt==0:
ans = ans+1
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | for i in range(2, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | cnt = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | for j in range(2, int(i**(1/2))+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 6 | if (i%j)==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | cnt = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | if cnt==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | ans = ans+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 2개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 0
def f(s, k):
if k==0:
if n==s:
return 1
else:
return 0
if s>n: #더 이상 탐색을 진행하지 않고 백트랙
return 0
cnt = 0
for i in range(1, n+1):
cnt = cnt+f(s+i, k-1)
return cnt
n = int(input())
for i in range(1, n+1):
ans = ans+f(0,i)
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | def f(s, k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 3 | if k==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 4 | if n==s: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | else: | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 7 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 9 | if s>n: #더 이상 탐색을 진행하지 않고 백트랙 | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 10 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 11 | cnt = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 12 | for i in range(1, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 13 | cnt = cnt+f(s+i, k-1) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 14 | return cnt | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 16 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 17 | for i in range(1, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 18 | ans = ans+f(0,i) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 20 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
문자열 처리, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 2개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 문자열 처리, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(c, k) :
if k == 0 :
if c == s :
return 1
else :
return 0
if c > s : # 더 이상 탐색을 진행하지 않고 백트랙
return 0
cnt = 0
for i in range(0,n):
cnt += f(c+A[i], k-1)
return cnt
n = int(input())
s = int(input())
A = list(map(int,input().split()))
ans = 0
for i in range(0, n) :
ans += f(0,i)
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(c, k) : | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k == 0 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | if c == s : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 4 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | else : | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 6 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | if c > s : # 더 이상 탐색을 진행하지 않고 백트랙 | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 8 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 10 | cnt = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 11 | for i in range(0,n): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 12 | cnt += f(c+A[i], k-1) | 기존 변수 값에 새 값을 더해 누적합니다. |
| 13 | return cnt | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 15 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 16 | s = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 17 | A = list(map(int,input().split())) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 18 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 19 | for i in range(0, n) : | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 20 | ans += f(0,i) | 기존 변수 값에 새 값을 더해 누적합니다. |
| 21 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 987654321
coin = [500, 100, 50, 10]
def f(won, d):
global ans
if won>n:
return
if won==n:
ans = min(d, ans)
return
for i in range(4):
f(won+coin[i], d+1)
return
n = int(input())
f(0, 0)
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 987654321 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | coin = [500, 100, 50, 10] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | def f(won, d): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 4 | global ans | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 5 | if won>n: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | if won==n: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 8 | ans = min(d, ans) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 11 | for i in range(4): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 12 | f(won+coin[i], d+1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 13 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 16 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 17 | f(0, 0) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 18 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 987654321
coin = [500,100,50,10]
def f(won, d):
global ans
if won>n:
return
if d>=ans:
return
if won==n:
ans = min(d, ans)
return
for i in range(4):
f(won+coin[i], d+1)
return
n = int(input())
f(0, 0)
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 987654321 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | coin = [500,100,50,10] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | def f(won, d): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 4 | global ans | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 5 | if won>n: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | if d>=ans: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 10 | if won==n: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 11 | ans = min(d, ans) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 12 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 13 | for i in range(4): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 14 | f(won+coin[i], d+1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 15 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 17 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 18 | f(0, 0) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 19 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 0
coin = [500, 100, 50, 10]
n = int(input())
for i in range(4):
ans = ans+(n//coin[i])
n = n%coin[i]
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | coin = [500, 100, 50, 10] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 4 | for i in range(4): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | ans = ans+(n//coin[i]) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | n = n%coin[i] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 0
n = int(input())
for i in range(1, n+1):
if n%i==0:
ans = ans+ i
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | for i in range(1, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | if n%i==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | ans = ans+ i | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
ans = 0
n = int(input())
for i in range(1, int(n**(1/2))+1):
if n%i==0:
ans = ans+i
ans = ans+(n//i)
if n==(int(n**(1/2))**2):
ans = ans-(n**(1/2))
print(ans)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | for i in range(1, int(n**(1/2))+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 4 | if n%i==0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | ans = ans+i | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | ans = ans+(n//i) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | if n==(int(n**(1/2))**2): | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 8 | ans = ans-(n**(1/2)) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | print(ans) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
if k==1:
return 1
return f(k-1)+k
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | return f(k-1)+k | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 7 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
n = int(input())
f = [0] * (n+1)
f[1] = 1
f[2] = 2
for i in range(3,n+1):
f[i] = f[i-1] + f[i-2]
print(f[n])
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 2 | f = [0] * (n+1) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | f[1] = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | f[2] = 2 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | for i in range(3,n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 7 | f[i] = f[i-1] + f[i-2] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | print(f[n]) | 계산 결과나 진행 상태를 화면에 출력합니다. |
함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
n = int(input())
data = [0] * (n+1)
def f(k) :
if k==1:
return 0
if k==2:
return 1
return f(k-1) + f(k-2)
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 2 | data = [0] * (n+1) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | def f(k) : | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 5 | if k==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | if k==2: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 8 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 9 | return f(k-1) + f(k-2) | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 11 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 2개를 사용하고 조건 분기 4개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(low, high):
if low >= high :
return
mid = (low+high)//2
f(low, mid)
f(mid+1, high)
i = low
j = mid+1
for k in range(low, high+1):
if j > high :
B[k] = A[i]
i = i+1
elif i > mid :
B[k] = A[j]
j = j+1
elif A[i]<=A[j] :
B[k] = A[i]
i = i+1
else :
B[k] = A[j]
j = j+1
k += 1
for k in range(low, high+1):
A[k] = B[k]
return
n = int(input())
A = list(map(int, input().split()))
B = [0] * len(A)
f(0, len(A)-1)
print(A)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(low, high): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if low >= high : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | mid = (low+high)//2 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | f(low, mid) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 8 | f(mid+1, high) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 10 | i = low | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 11 | j = mid+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 13 | for k in range(low, high+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 14 | if j > high : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 15 | B[k] = A[i] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 16 | i = i+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 17 | elif i > mid : | 앞선 조건이 거짓일 때 추가 조건을 검사합니다. |
| 18 | B[k] = A[j] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 19 | j = j+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 20 | elif A[i]<=A[j] : | 앞선 조건이 거짓일 때 추가 조건을 검사합니다. |
| 21 | B[k] = A[i] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 22 | i = i+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 23 | else : | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 24 | B[k] = A[j] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 25 | j = j+1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 26 | k += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 28 | for k in range(low, high+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 29 | A[k] = B[k] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 30 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 32 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 33 | A = list(map(int, input().split())) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 34 | B = [0] * len(A) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 36 | f(0, len(A)-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 38 | print(A) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
if k==1:
return 1
if k==2:
return 2
ans = f(k-1)+f(k-2)
return ans
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | if k==2: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | return 2 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | ans = f(k-1)+f(k-2) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | return ans | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 9 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 10 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(n):
if n==1:
print("*")
return
f(n-1)
for i in range(n):
print("*", end=' ')
print()
f(n-1)
return
n = int(input())
f(n)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(n): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if n==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | print("*") | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 4 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | f(n-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 6 | for i in range(n): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 7 | print("*", end=' ') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 8 | print() | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 9 | f(n-1) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 10 | return | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 12 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 13 | f(n) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f( n ):
if n==1:
return 1
if n==2:
return 2
if n==3:
return 4
ans = f(n-1) + f(n-2) +f(n-3)
return ans
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f( n ): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if n==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | if n==2: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | return 2 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | if n==3: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | return 4 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 9 | ans = f(n-1) + f(n-2) +f(n-3) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 11 | return ans | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 13 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 15 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
2차원 리스트, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 4개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 2차원 리스트, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
A=[[0 for _ in range(100)] for __ in range(100)]
dx = [0,1,1,2,2,2,2,2]
dy = [2,1,3,0,1,2,3,4]
def f(a, b, x, y) :
if x==3 :
for i in range(8) :
A[a+dx[i]][b+dy[i]] = 1
else :
f(a,b+y//2,x//2,y//2)
f(a+x//2,b,x//2,y//2)
f(a+x//2,b+y,x//2,y//2)
n = int(input())
x = 3
y = 3
for i in range(n-1) :
x = x*2
y = y*2
f(1, 1, x, y)
for i in range(1,x+1):
for j in range(1,y*2+2):
if A[i][j]==1 :
print("*", end="")
else :
print(" ", end="")
print()
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | A=[[0 for _ in range(100)] for __ in range(100)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | dx = [0,1,1,2,2,2,2,2] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | dy = [2,1,3,0,1,2,3,4] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | def f(a, b, x, y) : | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 6 | if x==3 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | for i in range(8) : | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 8 | A[a+dx[i]][b+dy[i]] = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | else : | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 10 | f(a,b+y//2,x//2,y//2) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 11 | f(a+x//2,b,x//2,y//2) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 12 | f(a+x//2,b+y,x//2,y//2) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 14 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 15 | x = 3 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 16 | y = 3 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 18 | for i in range(n-1) : | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 19 | x = x*2 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 20 | y = y*2 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 22 | f(1, 1, x, y) | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 24 | for i in range(1,x+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 25 | for j in range(1,y*2+2): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 26 | if A[i][j]==1 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 27 | print("*", end="") | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 28 | else : | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 29 | print(" ", end="") | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 30 | print() | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
if k<=2: # f(1), f(2)
return 1
return f(k-1) + f(k-2)
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k<=2: # f(1), f(2) | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | return f(k-1) + f(k-2) | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 6 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [0]*1000000
def f(k):
if data[k]>0:
return data[k]
if k<=2: #f(1), f(2)
return 1
data[k] = f(k-1)+f(k-2)
return data[k]
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [0]*1000000 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 3 | if data[k]>0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 4 | return data[k] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | if k<=2: #f(1), f(2) | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | data[k] = f(k-1)+f(k-2) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | return data[k] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 10 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 11 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [0]*1000000
n = int(input())
data[1] = 1
data[2] = 1
for i in range(3, n+1):
data[i] = data[i-1] + data[i-2]
print(data[n])
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [0]*1000000 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | data[1] = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | data[2] = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | for i in range(3, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 6 | data[i] = data[i-1] + data[i-2] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | print(data[n]) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(k):
if k==1:
return 1
if k==2:
return 2
ans = f(k-1)+f(k-2)
return ans
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if k==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | if k==2: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | return 2 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | ans = f(k-1)+f(k-2) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | return ans | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 9 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [-1]*100000
def f(k):
if k==1:
return 1
if k==2:
return 2
if data[k]>=0:
return data[k]
data[k] = f(k-1)+f(k-2)
return data[k]
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [-1]*100000 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 3 | if k==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 4 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | if k==2: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | return 2 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | if data[k]>=0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | return data[k] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 11 | data[k] = f(k-1)+f(k-2) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 12 | return data[k] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 13 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 14 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [0]*1000000
n = int(input())
data[1] = 1
data[2] = 2
for i in range(3, n+1):
data[i] = data[i-1]+data[i-2]
print(data[n])
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [0]*1000000 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | data[1] = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | data[2] = 2 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | for i in range(3, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 6 | data[i] = data[i-1]+data[i-2] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | print(data[n]) | 계산 결과나 진행 상태를 화면에 출력합니다. |
함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(n) :
if n == 1 :
return 1
ans = 0
ans = ans + f(n-1)
ans = ans + n
ans = ans + f(n-1)
return ans
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(n) : | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if n == 1 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | ans = ans + f(n-1) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 8 | ans = ans + n | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | ans = ans + f(n-1) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 11 | return ans | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 13 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 15 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [-1]*1000000
def f(k):
if k==1:
return 1
if data[k]>=0:
return data[k]
data[k] = 0
data[k] = data[k]+f(k-1)
data[k] = data[k]+k
data[k] = data[k]+f(k-1)
return data[k]
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [-1]*1000000 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | def f(k): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 3 | if k==1: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 4 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | if data[k]>=0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | return data[k] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | data[k] = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | data[k] = data[k]+f(k-1) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | data[k] = data[k]+k | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 11 | data[k] = data[k]+f(k-1) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 13 | return data[k] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 14 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 15 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [0]*1000000
n = int(input())
data[1] = 1
for i in range(2, n+1):
data[i] = data[i-1]+i+data[i-1]
print(data[n])
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [0]*1000000 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 3 | data[1] = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 4 | for i in range(2, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 5 | data[i] = data[i-1]+i+data[i-1] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | print(data[n]) | 계산 결과나 진행 상태를 화면에 출력합니다. |
함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 4개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [-1] * 1000000
def f(n) :
if n == 1 :
return 1
if n == 2 :
return 2
if n == 3 :
return 4
if data[n] >= 0 :
return data[n]
data[n] = f(n-1) + f(n-2) + f(n-3)
return data[n]
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [-1] * 1000000 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | def f(n) : | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 3 | if n == 1 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 4 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | if n == 2 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | return 2 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | if n == 3 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 8 | return 4 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 10 | if data[n] >= 0 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 11 | return data[n] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 13 | data[n] = f(n-1) + f(n-2) + f(n-3) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 14 | return data[n] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 16 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 18 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [0] * 1000000
n = int(input())
data[1] = 1
data[2] = 2
data[3] = 4
for i in range(4, n+1):
data[i] = data[i-1] + data[i-2] + data[i-3]
print(data[n])
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [0] * 1000000 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 5 | data[1] = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | data[2] = 2 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | data[3] = 4 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | for i in range(4, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 10 | data[i] = data[i-1] + data[i-2] + data[i-3] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 12 | print(data[n]) | 계산 결과나 진행 상태를 화면에 출력합니다. |
함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [-1] * 1000000
def f(n) :
if n == 1 :
return 1
if data[n] >= 0 :
return data[n]
data[n] = f(n-1) + n + f(n-1)
return data[n]
n = int(input())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [-1] * 1000000 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | def f(n) : | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 3 | if n == 1 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 4 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | if data[n] >= 0 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | return data[n] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 9 | data[n] = f(n-1) + n + f(n-1) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | return data[n] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 12 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 14 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [0] * 1000000
n = int(input())
data[1] = 1
for i in range(2, n+1):
data[i] = data[i-1] + i + data[i-1]
print(data[n])
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [0] * 1000000 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 5 | data[1] = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | for i in range(2, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 8 | data[i] = data[i-1] + i + data[i-1] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | print(data[n]) | 계산 결과나 진행 상태를 화면에 출력합니다. |
문자열 처리, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 4개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(n) :
if n == k :
return 0
if n == 1 :
return 1
if n == 2 :
return 2
if n == 3 :
return 4
return f(n-1) + f(n-2) + f(n-3)
n, k = map(int, input().split())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(n) : | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if n == k : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | if n == 1 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | if n == 2 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | return 2 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | if n == 3 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | return 4 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 11 | return f(n-1) + f(n-2) + f(n-3) | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 13 | n, k = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 15 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
문자열 처리, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 5개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [-1] * 100001
def f(n) :
if n == k :
return 0
if n == 1 :
return 1
if n == 2 :
return 2
if n == 3 :
return 4
if data[n] >= 0 :
return data[n]
data[n] = f(n-1) + f(n-2) + f(n-3)
return data[n]
n, k = map(int, input().split())
print(f(n))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [-1] * 100001 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 2 | def f(n) : | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 3 | if n == k : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 4 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 5 | if n == 1 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | return 1 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 7 | if n == 2 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 8 | return 2 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 9 | if n == 3 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 10 | return 4 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 12 | if data[n] >= 0 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 13 | return data[n] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 15 | data[n] = f(n-1) + f(n-2) + f(n-3) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 16 | return data[n] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 18 | n, k = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 20 | print(f(n)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [-1] * 100001
n, k = map(int, input().split())
data[1] = 1
data[2] = 2
data[3] = 4
for i in range(4, n+1):
if i == k :
data[i] = 0
else :
data[i] = data[i-1] + data[i-2] + data[i-3]
print(data[n])
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [-1] * 100001 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | n, k = map(int, input().split()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 5 | data[1] = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | data[2] = 2 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | data[3] = 4 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 9 | for i in range(4, n+1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 10 | if i == k : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 11 | data[i] = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 12 | else : | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 13 | data[i] = data[i-1] + data[i-2] + data[i-3] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 15 | print(data[n]) | 계산 결과나 진행 상태를 화면에 출력합니다. |
문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
n = int(input())
arr = list(map(int,input().split()))
cnt1 = 0
cnt2 = 0
for i in range(n):
for j in range(i+1, n):
if arr[i] > arr[j]:
cnt1 += 1
cnt2 += 1
print(cnt1, cnt2)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 2 | arr = list(map(int,input().split())) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 4 | cnt1 = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 5 | cnt2 = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 7 | for i in range(n): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 8 | for j in range(i+1, n): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 9 | if arr[i] > arr[j]: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 10 | cnt1 += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 11 | cnt2 += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 13 | print(cnt1, cnt2) | 계산 결과나 진행 상태를 화면에 출력합니다. |
문자열 처리, 함수, 조건문 개념을 중심으로, 함수 f, g을(를) 정의하고 반복 구조 5개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 문자열 처리, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
n = int(input())
B = list(map(int, input().split()))
def f() :
A = [0]*1000100
for i in range(n):
A[B[i]] += 1
for i in range(n):
ans = 0
j = 1
while j*j < B[i]:
if B[i] % j == 0:
ans += A[j] + A[B[i]//j]
j += 1
if j*j == B[i]:
ans += A[j]
print(ans-1, end=" ")
def g() :
for i in range(n) :
ans = 0
for j in range(n) :
if B[i]%B[j] == 0 :
ans += 1
print(ans-1, end=" ")
f()
print()
g()
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 2 | B = list(map(int, input().split())) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 4 | def f() : | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 5 | A = [0]*1000100 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | for i in range(n): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 7 | A[B[i]] += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 9 | for i in range(n): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 10 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 11 | j = 1 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 12 | while j*j < B[i]: | 조건이 참인 동안 같은 작업을 반복합니다. |
| 13 | if B[i] % j == 0: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 14 | ans += A[j] + A[B[i]//j] | 기존 변수 값에 새 값을 더해 누적합니다. |
| 15 | j += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 16 | if j*j == B[i]: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 17 | ans += A[j] | 기존 변수 값에 새 값을 더해 누적합니다. |
| 18 | print(ans-1, end=" ") | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 20 | def g() : | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 21 | for i in range(n) : | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 22 | ans = 0 | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 23 | for j in range(n) : | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 24 | if B[i]%B[j] == 0 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 25 | ans += 1 | 기존 변수 값에 새 값을 더해 누적합니다. |
| 26 | print(ans-1, end=" ") | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 28 | f() | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
| 29 | print() | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 30 | g() | 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다. |
조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
a = int(input())
for i in range(1, a):
print(2 - (i % 2), end='')
if a % 2:
print(3)
else:
print(2)
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | a = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 2 | for i in range(1, a): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 3 | print(2 - (i % 2), end='') | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 5 | if a % 2: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 6 | print(3) | 계산 결과나 진행 상태를 화면에 출력합니다. |
| 7 | else: | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 8 | print(2) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
def f(x, y):
if y == 3 :
return -10000
if x == n:
return 0
return max(f(x + 1, y + 1)+ ni[x], f(x + 1, 0))
n = int(input())
ni = list(map(int, input().split()))
print(f(0, 0))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | def f(x, y): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 2 | if y == 3 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 3 | return -10000 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 4 | if x == n: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | return max(f(x + 1, y + 1)+ ni[x], f(x + 1, 0)) | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 9 | ni = list(map(int, input().split())) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 10 | print(f(0, 0)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
재귀 함수, 2차원 리스트, 문자열 처리 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 재귀 함수, 2차원 리스트, 문자열 처리, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
data = [[0 for i in range(4)]for i in range(110)]
def f(x, y):
if y == 3 :
return -10000
if x == n:
return 0
if data[x][y] > 0 :
return data[x][y]
data[x][y] = max(f(x + 1, y + 1) + coin[x], f(x + 1, 0))
return data[x][y]
n = int(input())
coin = list(map(int, input().split()))
print(f(0, 0))
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | data = [[0 for i in range(4)]for i in range(110)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 3 | def f(x, y): | 재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다. |
| 4 | if y == 3 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 5 | return -10000 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 6 | if x == n: | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 7 | return 0 | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 8 | if data[x][y] > 0 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | return data[x][y] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 11 | data[x][y] = max(f(x + 1, y + 1) + coin[x], f(x + 1, 0)) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 12 | return data[x][y] | 함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다. |
| 14 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 15 | coin = list(map(int, input().split())) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 16 | print(f(0, 0)) | 계산 결과나 진행 상태를 화면에 출력합니다. |
2차원 리스트, 문자열 처리, 조건문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.
이 예제에서는 2차원 리스트, 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.
n = int(input())
coin = list(map(int, input().split()))
data = [[0 for i in range(4)] for j in range(n+1)]
for x in range(n-1, -1, -1):
for y in range(2, -1, -1):
if y == 2 :
data[x][y] = data[x+1][0]
else :
data[x][y] = max(data[x+1][y+1] + coin[x], data[x+1][0])
print(data[0][0])
| 줄 | 코드 | 설명 |
|---|---|---|
| 1 | n = int(input()) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 2 | coin = list(map(int, input().split())) | 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다. |
| 4 | data = [[0 for i in range(4)] for j in range(n+1)] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 6 | for x in range(n-1, -1, -1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 7 | for y in range(2, -1, -1): | 정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다. |
| 8 | if y == 2 : | 조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다. |
| 9 | data[x][y] = data[x+1][0] | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 10 | else : | 앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다. |
| 11 | data[x][y] = max(data[x+1][y+1] + coin[x], data[x+1][0]) | 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다. |
| 13 | print(data[0][0]) | 계산 결과나 진행 상태를 화면에 출력합니다. |