파이썬 코드 104개 상세 설명

code.zip에 포함된 전체 예제 · 원본 코드 · 실행 흐름 · 줄별 해설 · 오류 및 개선 포인트

자료 안내

전체 수록
104개 파이썬 파일을 번호순으로 정리했습니다.
상세 해설
각 실행문의 기능을 줄 단위로 설명합니다.
학습 구조
실행 흐름과 핵심 개념을 함께 제공합니다.
코드 점검
문법 오류와 경계값 주의를 표시합니다.
10.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 9줄함수 1개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
9n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
10print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
10a.py

메모이제이션을 적용한 재귀 계산

정상

재귀 함수, 메모이제이션, 함수 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수메모이제이션함수조건문
실행 코드 9줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 메모이제이션, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1memo = {1: 1, 2: 2}오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3def 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]함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
10n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
11print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
16.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수 개념을 중심으로, 함수 f을(를) 정의하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수
실행 코드 4줄함수 1개반복문 0개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f():
    print("Hello")

f()
print("World")
줄별 상세 설명 보기
코드설명
1def f():재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 print("Hello")계산 결과나 진행 상태를 화면에 출력합니다.
4f()앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
5print("World")계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
18_1.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수 개념을 중심으로, 함수 f을(를) 정의하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수
실행 코드 5줄함수 1개반복문 0개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f():
    print("Hello")
    return
    print("World")

f()
줄별 상세 설명 보기
코드설명
1def f():재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 print("Hello")계산 결과나 진행 상태를 화면에 출력합니다.
3 return함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
4 print("World")계산 결과나 진행 상태를 화면에 출력합니다.
6f()앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
18_2.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수 개념을 중심으로, 함수 f을(를) 정의하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수
실행 코드 3줄함수 1개반복문 0개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f():
    return 3

print(f())
줄별 상세 설명 보기
코드설명
1def f():재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 return 3함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
4print(f())계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
19.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수 개념을 중심으로, 함수 f을(를) 정의하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수
실행 코드 3줄함수 1개반복문 0개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(n):
    print(n)

f(3)
줄별 상세 설명 보기
코드설명
1def f(n):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 print(n)계산 결과나 진행 상태를 화면에 출력합니다.
4f(3)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
20.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수 개념을 중심으로, 함수 f을(를) 정의하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수
실행 코드 3줄함수 1개반복문 0개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(a, b):
    return a+b

print(f(3, 5))
줄별 상세 설명 보기
코드설명
1def f(a, b):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 return a+b함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
4print(f(3, 5))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
21.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 6줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(a, b):
    if a<b:
        return a
    else:
        return b

print(f(3, 5))
줄별 상세 설명 보기
코드설명
1def f(a, b):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 if a<b:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
3 return a함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
4 else:앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다.
5 return b함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
7print(f(3, 5))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
23.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 6줄함수 1개반복문 1개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(n):
    k = 0
    while k<n:
        k = k+1
        print(k)

f(3)
줄별 상세 설명 보기
코드설명
1def f(n):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 k = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3 while k<n:조건이 참인 동안 같은 작업을 반복합니다.
4 k = k+1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5 print(k)계산 결과나 진행 상태를 화면에 출력합니다.
7f(3)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
24.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 8줄함수 1개반복문 1개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(n):
    k = 0
    s = 0
    while k<n:
        k = k+1
        s = k+k
    return s

print(f(3))
줄별 상세 설명 보기
코드설명
1def f(n):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 k = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3 s = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4 while k<n:조건이 참인 동안 같은 작업을 반복합니다.
5 k = k+1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6 s = k+k오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7 return s함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
9print(f(3))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
25.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 9줄함수 1개반복문 1개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
s = 0
def f(n):
    global s
    k = 0
    while k<n:
        k = k+1
        s = s+k

f(3)
print(s)
줄별 상세 설명 보기
코드설명
1s = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2def f(n):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
3 global s앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
4 k = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5 while k<n:조건이 참인 동안 같은 작업을 반복합니다.
6 k = k+1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7 s = s+k오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
9f(3)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
10print(s)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 전역 변수 사용은 함수 간 의존성을 높이므로 매개변수와 반환값으로 전달하면 구조가 명확해집니다.
맨 위로
27.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 8줄함수 1개반복문 1개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def f(n):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 s = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3 for k in range(1, n+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 s = s+k오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5 return s함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
7n = input()사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
8n = int(n)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
9print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
33.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 7줄함수 1개반복문 1개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(k):
    s = 0
    for i in range(1, k+1):
        s = s+i
    return s

n = int(input())
print(f(n))
줄별 상세 설명 보기
코드설명
1def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 s = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3 for i in range(1, k+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 s = s+i오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5 return s함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
7n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
8print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
36.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 6줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(k):
    if k==1:
        return 1
    return f(k-1)+k

n = int(input())
print(f(n))
줄별 상세 설명 보기
코드설명
1def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 if k==1:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
3 return 1함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
4 return f(k-1)+k함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
6n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
7print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
39.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 7줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(k):
    if k<1:
        return

    f(k-1)
    print(k)

n = int(input())
f(n)
줄별 상세 설명 보기
코드설명
1def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 if k<1:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
3 return함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
5 f(k-1)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
6 print(k)계산 결과나 진행 상태를 화면에 출력합니다.
8n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
9f(n)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
40.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 7줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(k):
    if k<1:
        return

    print(k)
    f(k-1)
    

n = int(input())
f(n)
줄별 상세 설명 보기
코드설명
1def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 if k<1:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
3 return함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
5 print(k)계산 결과나 진행 상태를 화면에 출력합니다.
6 f(k-1)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
9n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
10f(n)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
42.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 7줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(k):
    if k==0:
        return

    f(k-1)
    print('*', end='')
    

n = int(input())
f(n)
줄별 상세 설명 보기
코드설명
1def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 if k==0:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
3 return함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
5 f(k-1)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
6 print('*', end='')계산 결과나 진행 상태를 화면에 출력합니다.
9n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
10f(n)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
45.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 10줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
n = 0

def f():
    global n
    if n==0:
        return

    print('*', end='')
    n =n-1
    f()


n = int(input())
f()
줄별 상세 설명 보기
코드설명
1n = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3def f():재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
4 global n앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
5 if n==0:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
6 return함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
8 print('*', end='')계산 결과나 진행 상태를 화면에 출력합니다.
9 n =n-1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
10 f()앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
13n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
14f()앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
  • 전역 변수 사용은 함수 간 의존성을 높이므로 매개변수와 반환값으로 전달하면 구조가 명확해집니다.
맨 위로
48.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 8줄함수 1개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 if k==0:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
3 return 0함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
5 if k==1:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
6 return 1함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
8 return f(k-2)+f(k-1)함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
10n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
11print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
50.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 7줄함수 1개반복문 2개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 for i in range(1, k+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
3 for j in range(1, i+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 print('*', end='')계산 결과나 진행 상태를 화면에 출력합니다.
5 print('')계산 결과나 진행 상태를 화면에 출력합니다.
7n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
8f(n)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
53.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 g, f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 11줄함수 2개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1def g(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 if k>=1:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
3 g(k-1)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
4 print('*', end='')계산 결과나 진행 상태를 화면에 출력합니다.
6def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
7 if k>=1:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
8 f(k-1)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
9 g(k)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
10 print('')계산 결과나 진행 상태를 화면에 출력합니다.
12n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
13f(n)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
56.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 g, f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 12줄함수 2개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1n = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3def g(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
4 if k>=1:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
5 print('*', end='')계산 결과나 진행 상태를 화면에 출력합니다.
6 g(k-1)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
8def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
9 if k<=n:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
10 g(k)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
11 print('')계산 결과나 진행 상태를 화면에 출력합니다.
12 f(k+1)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
14n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
15f(1)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
58.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수문자열 처리함수조건문
실행 코드 8줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def f(a, b):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 if a==0:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
3 return b함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
5 return f(b%a, a)함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
7n, m = input().split()사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
8n = int(n)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
9m = int(m)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
10print(f(n, m))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
61.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 8줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(k):
    if k<2:
        print(k, end='')
        return

    f(k//2)
    print(k%2, end='')

n = int(input())
f(n)
줄별 상세 설명 보기
코드설명
1def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 if k<2:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
3 print(k, end='')계산 결과나 진행 상태를 화면에 출력합니다.
4 return함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
6 f(k//2)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
7 print(k%2, end='')계산 결과나 진행 상태를 화면에 출력합니다.
9n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
10f(n)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
64.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 4개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수문자열 처리함수조건문
실행 코드 14줄함수 1개반복문 0개조건문 4개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  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))
줄별 상세 설명 보기
코드설명
1def 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)함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
13a, b = input().split()사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
14a = int(a)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
15b = int(b)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
16print(f(a, b))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
67.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수문자열 처리함수조건문
실행 코드 8줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1def 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)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
7n, START, TO, WITH = input().split()사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
8n = int(n)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
9f(n, START, TO, WITH)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
70.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 p1, p2을(를) 정의하고 반복 구조 2개를 사용하고 조건 분기 7개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문반복문
실행 코드 23줄함수 2개반복문 2개조건문 7개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
12def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
23n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
24if p1(n): # p1이 승리조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
25 print(1)계산 결과나 진행 상태를 화면에 출력합니다.
26else: # p2가 승리앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다.
27 print(2)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
72.py

터틀 그래픽 시각화

정상

재귀 함수, 터틀 그래픽, 함수 개념을 중심으로, 함수 tree을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수터틀 그래픽함수조건문
실행 코드 19줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.

학습 포인트

이 예제에서는 재귀 함수, 터틀 그래픽, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1from turtle import *특정 모듈에서 필요한 기능만 선택하여 불러옵니다.
3speed(0)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
4colormode(255)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
6def 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)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
26left(90)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
27tree(90, 8)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
맨 위로
85.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 push, pop을(를) 정의하고 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 9줄함수 2개반복문 2개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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())
줄별 상세 설명 보기
코드설명
1queue = []오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2def push(x):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
3 queue.append(x)리스트의 끝에 새로운 원소를 추가합니다.
4def pop():재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
5 return queue.pop(0)함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
7for i in range(1, 6):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
8 push(i)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
9for i in range(1, 6):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
10 print(pop())계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
87.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 push, pop을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문반복문
실행 코드 18줄함수 2개반복문 1개조건문 1개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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
줄별 상세 설명 보기
코드설명
1a=[1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0] #1은 삽입, 0은 삭제를 의미함.오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2queue = []오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4def push(x):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
5 queue.append(x)리스트의 끝에 새로운 원소를 추가합니다.
7def pop():재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
8 return queue.pop(0)함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
10id = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
11st = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
13for 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기존 변수 값에 새 값을 더해 누적합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
89.py

큐·너비 우선 탐색 · 반복문 예제

정상

큐·너비 우선 탐색, 반복문 개념을 중심으로, 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

큐·너비 우선 탐색반복문
실행 코드 6줄함수 0개반복문 2개조건문 0개

실행 흐름

  1. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  2. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 큐·너비 우선 탐색, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
import queue
q = queue.Queue()
for i in range(1, 6):
    q.put(i)
while not q.empty():
    print(q.get())
줄별 상세 설명 보기
코드설명
1import queuequeue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다.
2q = queue.Queue()오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3for i in range(1, 6):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 q.put(i)큐 또는 스택 자료구조에 값을 삽입합니다.
5while not q.empty():조건이 참인 동안 같은 작업을 반복합니다.
6 print(q.get())계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
90.py

큐·너비 우선 탐색 · 조건문 예제

정상

큐·너비 우선 탐색, 조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

큐·너비 우선 탐색조건문반복문
실행 코드 18줄함수 0개반복문 1개조건문 1개

실행 흐름

  1. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  2. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 큐·너비 우선 탐색, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1import queuequeue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다.
3a=[1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0] #1은 삽입, 0은 삭제를 의미오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4q = queue.Queue()오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6id = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7st = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
8mx = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
10for 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기존 변수 값에 새 값을 더해 누적합니다.
22print("최대 대기 인원수 =", mx)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
94.py

문자열 처리 · 조건문 예제

정상

문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 4개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

문자열 처리조건문반복문
실행 코드 15줄함수 0개반복문 4개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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")
줄별 상세 설명 보기
코드설명
1s = [0] * 9오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2for 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오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
8if 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()계산 결과나 진행 상태를 화면에 출력합니다.
15else:앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다.
16 print("Impossible\n")계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
98.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 스택, 함수 개념을 중심으로, 함수 push, pop을(를) 정의하고 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수스택함수반복문
실행 코드 9줄함수 2개반복문 2개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 스택, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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())
줄별 상세 설명 보기
코드설명
1stack = []오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2def push(x):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
3 stack.append(x)리스트의 끝에 새로운 원소를 추가합니다.
4def pop():재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
5 return stack.pop()함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
6for i in range(1, 6):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
7 push(i)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
8for i in range(1, 6):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
9 print(pop())계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
99.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 스택, 함수 개념을 중심으로, 함수 push, pop을(를) 정의하고 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수스택함수반복문
실행 코드 17줄함수 2개반복문 3개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 스택, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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()
줄별 상세 설명 보기
코드설명
1stack = []오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2goal = [2, 1, 3, 4]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4def push(x):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
5 stack.append(x)리스트의 끝에 새로운 원소를 추가합니다.
7def pop():재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
8 return stack.pop()함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
10now = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
12for 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기존 변수 값에 새 값을 더해 누적합니다.
20while len(stack) > 0:조건이 참인 동안 같은 작업을 반복합니다.
21 print("삭제", end=' ')계산 결과나 진행 상태를 화면에 출력합니다.
22 pop()앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
101.py

스택을 활용한 자료 처리

정상

스택, 반복문 개념을 중심으로, 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

스택반복문
실행 코드 6줄함수 0개반복문 2개조건문 0개

실행 흐름

  1. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  2. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 스택, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
import queue
s = queue.LifoQueue()
for i in range(1, 6):
    s.put(i)
while not s.empty():
    print(s.get())
줄별 상세 설명 보기
코드설명
1import queuequeue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다.
2s = queue.LifoQueue()오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3for i in range(1, 6):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 s.put(i)큐 또는 스택 자료구조에 값을 삽입합니다.
5while not s.empty():조건이 참인 동안 같은 작업을 반복합니다.
6 print(s.get())계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
102.py

스택을 활용한 자료 처리

정상

스택, 반복문 개념을 중심으로, 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

스택반복문
실행 코드 14줄함수 0개반복문 3개조건문 0개

실행 흐름

  1. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  2. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  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=' ')
줄별 상세 설명 보기
코드설명
1import queuequeue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다.
3goal = [2, 1, 4, 3]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4s = queue.LifoQueue() # LifoQueue는 후입 선출이므로 스택오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5now = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7for 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기존 변수 값에 새 값을 더해 누적합니다.
15while not s.empty():조건이 참인 동안 같은 작업을 반복합니다.
16 s.get()큐 또는 스택에서 다음 값을 꺼냅니다.
17 print("삭제", end=' ')계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • Queue 내부의 queue 속성에 직접 접근하면 구현 의존성이 생기므로 별도 스택 리스트를 고려할 수 있습니다.
맨 위로
108.py

스택을 활용한 자료 처리

정상

스택, 조건문, 반복문 개념을 중심으로, 반복 구조 3개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

스택조건문반복문
실행 코드 20줄함수 0개반복문 3개조건문 3개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 스택, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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=' ')
줄별 상세 설명 보기
코드설명
1import queuequeue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다.
3op = "+-*/"오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4eq = input()사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
5s = queue.LifoQueue()오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7for 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=' ')계산 결과나 진행 상태를 화면에 출력합니다.
22while not s.empty():조건이 참인 동안 같은 작업을 반복합니다.
23 print(s.get(), end=' ')계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
111.py

너비 우선 탐색으로 퍼즐 해결

정상

재귀 함수, 큐·너비 우선 탐색, 문자열 처리 개념을 중심으로, 함수 solve을(를) 정의하고 반복 구조 3개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수큐·너비 우선 탐색문자열 처리함수조건문반복문
실행 코드 43줄함수 1개반복문 3개조건문 3개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  5. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  6. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 큐·너비 우선 탐색, 문자열 처리, 함수 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1import queuequeue 모듈을 불러와 관련 기능을 사용할 수 있게 합니다.
3# 이동 방향 정의 (상, 하, 좌, 우)프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다.
4dx = [-1, 1, 0, 0]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5dy = [0, 0, -1, 1]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7# 목표 상태 (퍼즐 완료 상태)프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다.
8target = '123456780'오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
10# 방문 기록 저장프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다.
11chk = set()오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
13def 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# 초기 상태 입력 받기프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다.
49start = ''오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
50for _ in range(3):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
51 start += ''.join(input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
53# 결과 출력프로그램의 목적이나 다음 코드의 역할을 설명하는 주석입니다.
54print(solve(start))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
118_119.py

인접 행렬로 그래프 표현

정상

그래프, 2차원 리스트, 문자열 처리 개념을 중심으로, 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

그래프2차원 리스트문자열 처리반복문
실행 코드 9줄함수 0개반복문 3개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  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()
줄별 상세 설명 보기
코드설명
1Adj = [[0]*7 for _ in range(7)]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3V, E = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
4for i in range(E):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
5 u, v = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
6 Adj[u][v] = Adj[v][u] = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
8for i in range(1, 7):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
9 for j in range(1, 7):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
10 print(Adj[i][j], end=' ')계산 결과나 진행 상태를 화면에 출력합니다.
11 print()계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
121.py

인접 리스트로 그래프 표현

정상

그래프, 2차원 리스트, 문자열 처리 개념을 중심으로, 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

그래프2차원 리스트문자열 처리반복문
실행 코드 11줄함수 0개반복문 3개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  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()
줄별 상세 설명 보기
코드설명
1Adj = [[] for _ in range(7)]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3V, E = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
4for i in range(E):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
5 u, v = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
6 Adj[u].append(v)리스트의 끝에 새로운 원소를 추가합니다.
7 Adj[v].append(u)리스트의 끝에 새로운 원소를 추가합니다.
9for i in range(1, 7):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
10 print(i, end=':')계산 결과나 진행 상태를 화면에 출력합니다.
11 for j in Adj[i]:정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
12 print(j, end=' ')계산 결과나 진행 상태를 화면에 출력합니다.
13 print()계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
125-127.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 그래프, 2차원 리스트 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 4개를 사용하고 조건 분기 5개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수그래프2차원 리스트문자열 처리함수조건문
실행 코드 29줄함수 1개반복문 4개조건문 5개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  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")
줄별 상세 설명 보기
코드설명
1M=[[] for _ in range(11)]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2visited=[0]*11오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3visited = [0 for i in range(11)]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4ok = False오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6V, E = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
7for i in range(E):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
8 u, v = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
9 M[u].append(v)리스트의 끝에 새로운 원소를 추가합니다.
10 M[v].append(u)리스트의 끝에 새로운 원소를 추가합니다.
12def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
29for v in range(0, V+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
30 f(v, 1, [v])앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
31 if ok : break조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
33if ok != True: print("Impossible")조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
  • 전역 변수 사용은 함수 간 의존성을 높이므로 매개변수와 반환값으로 전달하면 구조가 명확해집니다.
맨 위로
136.py

인접 행렬로 그래프 표현

정상

그래프, 2차원 리스트, 문자열 처리 개념을 중심으로, 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

그래프2차원 리스트문자열 처리반복문
실행 코드 9줄함수 0개반복문 3개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  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()
줄별 상세 설명 보기
코드설명
1Adj=[[0]*10 for _ in range(10)]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3V = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
4for i in range(V-1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
5 u, v = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
6 Adj[u][v] = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
8for i in range(1, V+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
9 for j in range(1, V+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
10 print(Adj[i][j], end=' ')계산 결과나 진행 상태를 화면에 출력합니다.
11 print()계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
138.py

인접 리스트로 그래프 표현

정상

그래프, 2차원 리스트, 문자열 처리 개념을 중심으로, 반복 구조 3개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

그래프2차원 리스트문자열 처리반복문
실행 코드 10줄함수 0개반복문 3개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  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()
줄별 상세 설명 보기
코드설명
1Adj = [[] for _ in range(7)]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3V = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
4for i in range(V-1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
5 u, v = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
6 Adj[u].append(v)리스트의 끝에 새로운 원소를 추가합니다.
8for i in range(1, V+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
9 print(i, end=":")계산 결과나 진행 상태를 화면에 출력합니다.
10 for j in Adj[i]:정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
11 print(j, end=' ')계산 결과나 진행 상태를 화면에 출력합니다.
12 print()계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
142_143.py

딕셔너리 · 문자열 처리 예제

정상

딕셔너리, 문자열 처리, 조건문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

딕셔너리문자열 처리조건문반복문
실행 코드 16줄함수 0개반복문 2개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 딕셔너리, 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1T = dict()오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2S = input()사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3a, b = map(str, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
5p = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7for i in S:정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
8 if i != "-":조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
9 T[i] = p오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
10 p+=1기존 변수 값에 새 값을 더해 누적합니다.
12while 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기존 변수 값에 새 값을 더해 누적합니다.
19print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
144.py

딕셔너리 · 문자열 처리 예제

정상

딕셔너리, 문자열 처리, 조건문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

딕셔너리문자열 처리조건문반복문
실행 코드 16줄함수 0개반복문 2개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 딕셔너리, 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1T = dict()오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2S = input()사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3a, b = map(str, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
5p = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7for i in S:정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
8 if i != "-":조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
9 T[i] = p오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
10 p+=1기존 변수 값에 새 값을 더해 누적합니다.
12while 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기존 변수 값에 새 값을 더해 누적합니다.
19print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
145.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 그래프, 2차원 리스트 개념을 중심으로, 함수 getLCA을(를) 정의하고 반복 구조 2개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수그래프2차원 리스트문자열 처리함수조건문
실행 코드 20줄함수 1개반복문 2개조건문 3개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 그래프, 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))
줄별 상세 설명 보기
코드설명
1def 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오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
16a, b = map(str, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
17p, ans = 0, 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
18for i in S:정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
19 if i != '-': T[i] = p조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
20 p+=1기존 변수 값에 새 값을 더해 누적합니다.
21print(getLCA(a, b))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
149.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 그래프, 2차원 리스트 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 3개를 사용하고 조건 분기 4개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수그래프2차원 리스트문자열 처리함수조건문
실행 코드 26줄함수 1개반복문 3개조건문 4개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 그래프, 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)
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
16M = [[] for i in range(11)]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
17ans = 123456789987654321오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
18visited = [0 for i in range(11)]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
19ok = False오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
20V, E = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
21for 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))리스트의 끝에 새로운 원소를 추가합니다.
25for v in range(0, V+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
26 f(v, 1, [v], 0)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
27print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
  • 전역 변수 사용은 함수 간 의존성을 높이므로 매개변수와 반환값으로 전달하면 구조가 명확해집니다.
맨 위로
158_1.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 square을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 6줄함수 1개반복문 1개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def square():
 ans = 0
 for i in range(10):
   ans = ans + 10
 return ans

print(square())
줄별 상세 설명 보기
코드설명
1def square():재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3 for i in range(10):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 ans = ans + 10오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5 return ans함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
7print(square())계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
158_2.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 square을(를) 정의하고 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 7줄함수 1개반복문 2개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def square():
 ans = 0
 for i in range(10):
   for j in range(10):
     ans = ans + 1
 return ans

print(square())
줄별 상세 설명 보기
코드설명
1def square():재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3 for i in range(10):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 for j in range(10):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
5 ans = ans + 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6 return ans함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
8print(square())계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
158_3.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 square을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 6줄함수 1개반복문 1개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def square(n):
 ans = 0
 for i in range(n):
   ans = ans + n
 return ans

print(square(10))
줄별 상세 설명 보기
코드설명
1def square(n):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3 for i in range(n):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 ans = ans + n오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5 return ans함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
7print(square(10))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
158_4.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 square을(를) 정의하고 반복 구조 2개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 7줄함수 1개반복문 2개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def square(n):
 ans = 0
 for i in range(n):
   for j in range(n):
     ans = ans + 1
 return ans

print(square(10))
줄별 상세 설명 보기
코드설명
1def square(n):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3 for i in range(n):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 for j in range(n):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
5 ans = ans + 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6 return ans함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
8print(square(10))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
159.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수반복문
실행 코드 9줄함수 1개반복문 1개조건문 0개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
10print(f(10))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 변수 이름을 의미 있게 정하고, 경계값과 예외 입력을 추가로 시험하면 코드의 안정성이 높아집니다.
맨 위로
163.py

문자열 처리 · 조건문 예제

정상

문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

문자열 처리조건문반복문
실행 코드 8줄함수 0개반복문 2개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1data = list(map(int, input().split()))사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3for 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오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
9print(data)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
164.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 3개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수문자열 처리함수조건문반복문
실행 코드 20줄함수 1개반복문 3개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1def 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)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
19data = list(map(int, input().split()))사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
20f(0,len(data)-1)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
21print(data)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
168.py

조건문 · 반복문 예제

정상

조건문, 반복문 개념을 중심으로, 반복 구조 3개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

조건문반복문
실행 코드 8줄함수 0개반복문 3개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3for 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기존 변수 값에 새 값을 더해 누적합니다.
8print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
169.py

조건문 · 반복문 예제

정상

조건문, 반복문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

조건문반복문
실행 코드 8줄함수 0개반복문 2개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3for 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기존 변수 값에 새 값을 더해 누적합니다.
8print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
169_2.py

반복문 예제

정상

반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

반복문
실행 코드 5줄함수 0개반복문 1개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2n = int(input()) 사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3for i in range((n+1)//3, (n+1)//2):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 ans = ans+(i-(n-i+1)//2+1)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
173.py

조건문 · 반복문 예제

정상

조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

조건문반복문
실행 코드 6줄함수 0개반복문 1개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
ans = 0
n = int(input())
for i in range(1, n+1):
 if (n%i)==0:
  ans = ans+i
print(ans)
줄별 상세 설명 보기
코드설명
1ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3for i in range(1, n+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 if (n%i)==0:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
5 ans = ans+i오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
174.py

문자열 처리 · 조건문 예제

정상

문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

문자열 처리조건문반복문
실행 코드 7줄함수 0개반복문 1개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
2data = list(map(int,input().split()))사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5for i in range(n):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
6 if (data[i]%2)==1: #i번째 값이 홀수인지 판단조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
7 ans = ans+1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
9print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
175.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문반복문
실행 코드 9줄함수 1개반복문 1개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
8n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
9print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
176.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 13줄함수 1개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2def 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)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
12n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
13f(0)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
14print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
  • 전역 변수 사용은 함수 간 의존성을 높이므로 매개변수와 반환값으로 전달하면 구조가 명확해집니다.
맨 위로
181.py

조건문 · 반복문 예제

정상

조건문, 반복문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

조건문반복문
실행 코드 10줄함수 0개반복문 2개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3for 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오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
10print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
182.py

문자열 처리 · 조건문 예제

정상

문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

문자열 처리조건문반복문
실행 코드 7줄함수 0개반복문 1개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1import mathmath 모듈을 불러와 관련 기능을 사용할 수 있게 합니다.
2n, k = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4for i in range(1, n+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
5 if math.gcd(i, k)==1:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
6 ans = ans+1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
183.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문반복문
실행 코드 13줄함수 1개반복문 1개조건문 2개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1A = [0, 1, 3, 6, 7, 11, 15, 18]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
14f(0,0,0)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
15print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 전역 변수 사용은 함수 간 의존성을 높이므로 매개변수와 반환값으로 전달하면 구조가 명확해집니다.
맨 위로
184.py

함수 중심 함수 프로그램

정상

함수, 조건문, 반복문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

함수조건문반복문
실행 코드 14줄함수 1개반복문 1개조건문 2개

실행 흐름

  1. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1A = [0, 1, 3, 6, 7, 11, 15, 18]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
15f(0, 0, 0)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
16print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 전역 변수 사용은 함수 간 의존성을 높이므로 매개변수와 반환값으로 전달하면 구조가 명확해집니다.
맨 위로
187.py

조건문 · 반복문 예제

정상

조건문, 반복문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

조건문반복문
실행 코드 10줄함수 0개반복문 2개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3for 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오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
10print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
190.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 2개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문반복문
실행 코드 17줄함수 1개반복문 2개조건문 3개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
16n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
17for i in range(1, n+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
18 ans = ans+f(0,i)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
20print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
191.py

문자열 처리 중심 함수 프로그램

정상

문자열 처리, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 2개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

문자열 처리함수조건문반복문
실행 코드 19줄함수 1개반복문 2개조건문 3개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 문자열 처리, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
15n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
16s = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
17A = list(map(int,input().split()))사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
18ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
19for i in range(0, n) :정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
20 ans += f(0,i)기존 변수 값에 새 값을 더해 누적합니다.
21print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
195.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문반복문
실행 코드 15줄함수 1개반복문 1개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1ans = 987654321오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2coin = [500, 100, 50, 10]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
16n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
17f(0, 0)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
18print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
  • 전역 변수 사용은 함수 간 의존성을 높이므로 매개변수와 반환값으로 전달하면 구조가 명확해집니다.
맨 위로
196.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문반복문
실행 코드 17줄함수 1개반복문 1개조건문 3개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1ans = 987654321오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2coin = [500,100,50,10]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
17n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
18f(0, 0)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
19print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
  • 전역 변수 사용은 함수 간 의존성을 높이므로 매개변수와 반환값으로 전달하면 구조가 명확해집니다.
맨 위로
197.py

반복문 예제

정상

반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

반복문
실행 코드 7줄함수 0개반복문 1개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2coin = [500, 100, 50, 10]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
4for i in range(4):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
5 ans = ans+(n//coin[i])오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6 n = n%coin[i]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
198.py

조건문 · 반복문 예제

정상

조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

조건문반복문
실행 코드 6줄함수 0개반복문 1개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
ans = 0
n = int(input())
for i in range(1, n+1):
 if n%i==0:
   ans = ans+ i
print(ans)
줄별 상세 설명 보기
코드설명
1ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3for i in range(1, n+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 if n%i==0:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
5 ans = ans+ i오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
198_2.py

조건문 · 반복문 예제

정상

조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

조건문반복문
실행 코드 9줄함수 0개반복문 1개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1ans = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3for i in range(1, int(n**(1/2))+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
4 if n%i==0:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
5 ans = ans+i오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6 ans = ans+(n//i)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7if n==(int(n**(1/2))**2):조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
8 ans = ans-(n**(1/2))오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
10print(ans)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
204.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 6줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
def f(k):
 if k==1:
   return 1
 return f(k-1)+k

n = int(input())
print(f(n))
줄별 상세 설명 보기
코드설명
1def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 if k==1:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
3 return 1함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
4 return f(k-1)+k함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
6n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
7print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
205.py

반복문 예제

정상

반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

반복문
실행 코드 7줄함수 0개반복문 1개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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])
줄별 상세 설명 보기
코드설명
1n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
2f = [0] * (n+1)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3f[1] = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4f[2] = 2오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6for i in range(3,n+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
7 f[i] = f[i-1] + f[i-2] 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
9print(f[n])계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
207.py

재귀 함수로 수열 계산

정상

함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

함수조건문
실행 코드 9줄함수 1개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
2data = [0] * (n+1)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4def f(k) :재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
5 if k==1:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
6 return 0함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
7 if k==2:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
8 return 1함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
9 return f(k-1) + f(k-2)함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
11print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
210.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 2개를 사용하고 조건 분기 4개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수문자열 처리함수조건문반복문
실행 코드 30줄함수 1개반복문 2개조건문 4개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
32n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
33A = list(map(int, input().split()))사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
34B = [0] * len(A)오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
36f(0, len(A)-1)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
38print(A)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
214.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 9줄함수 1개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
9n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
10print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
215.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문반복문
실행 코드 12줄함수 1개반복문 1개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
12n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
13f(n)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
216.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 11줄함수 1개반복문 0개조건문 3개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
13n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
15print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
217.py

2차원 리스트 중심 함수 프로그램

정상

2차원 리스트, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 반복 구조 4개를 사용하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

2차원 리스트함수조건문반복문
실행 코드 25줄함수 1개반복문 4개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  5. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 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()
줄별 상세 설명 보기
코드설명
1A=[[0 for _ in range(100)] for __ in range(100)]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2dx = [0,1,1,2,2,2,2,2]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3dy = [2,1,3,0,1,2,3,4]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5def 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) 앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
14n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
15x = 3오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
16y = 3오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
18for i in range(n-1) :정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
19 x = x*2오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
20 y = y*2오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
22f(1, 1, x, y)앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
24for 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()계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
219.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 6줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def f(k):재사용할 기능을 함수로 정의합니다. 괄호 안의 값은 함수가 받을 매개변수입니다.
2 if k<=2: # f(1), f(2)조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
3 return 1함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
4 return f(k-1) + f(k-2)함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
5n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
6print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
219_2.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 10줄함수 1개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1data = [0]*1000000오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2def 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]함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
10n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
11print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
220.py

반복문 예제

정상

반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

반복문
실행 코드 7줄함수 0개반복문 1개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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])
줄별 상세 설명 보기
코드설명
1data = [0]*1000000오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3data[1] = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4data[2] = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5for i in range(3, n+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
6 data[i] = data[i-1] + data[i-2]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7print(data[n])계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
221.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 9줄함수 1개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
8n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
9print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
221_2.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 12줄함수 1개반복문 0개조건문 3개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1data = [-1]*100000오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2def 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]함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
13n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
14print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
222.py

반복문 예제

정상

반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

반복문
실행 코드 7줄함수 0개반복문 1개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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])
줄별 상세 설명 보기
코드설명
1data = [0]*1000000오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3data[1] = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4data[2] = 2오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5for i in range(3, n+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
6 data[i] = data[i-1]+data[i-2]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7print(data[n])계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
223.py

함수 중심 함수 프로그램

정상

함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

함수조건문
실행 코드 10줄함수 1개반복문 0개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def 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함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
13n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
15print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
224.py

재귀 함수로 수열 계산

정상

재귀 함수, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수함수조건문
실행 코드 13줄함수 1개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1data = [-1]*1000000오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2def 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]함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
14n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
15print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
225.py

반복문 예제

정상

반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

반복문
실행 코드 6줄함수 0개반복문 1개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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])
줄별 상세 설명 보기
코드설명
1data = [0]*1000000오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
3data[1] = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
4for i in range(2, n+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
5 data[i] = data[i-1]+i+data[i-1]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6print(data[n])계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
226_1_1.py

함수 중심 함수 프로그램

정상

함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 4개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

함수조건문
실행 코드 14줄함수 1개반복문 0개조건문 4개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  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))
줄별 상세 설명 보기
코드설명
1data = [-1] * 1000000오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2def 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]함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
16n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
18print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
226_1_2.py

반복문 예제

정상

반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

반복문
실행 코드 8줄함수 0개반복문 1개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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])
줄별 상세 설명 보기
코드설명
1data = [0] * 1000000오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
5data[1] = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6data[2] = 2 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7data[3] = 4오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
9for i in range(4, n+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
10 data[i] = data[i-1] + data[i-2] + data[i-3]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
12print(data[n])계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
227.py

함수 중심 함수 프로그램

정상

함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

함수조건문
실행 코드 10줄함수 1개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1data = [-1] * 1000000오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2def 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]함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
12n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
14print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
227_2_2.py

반복문 예제

정상

반복문 개념을 중심으로, 반복 구조 1개를 사용하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

반복문
실행 코드 6줄함수 0개반복문 1개조건문 0개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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])
줄별 상세 설명 보기
코드설명
1data = [0] * 1000000오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
5data[1] = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7for i in range(2, n+1):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
8 data[i] = data[i-1] + i + data[i-1]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
10print(data[n])계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
230_1.py

문자열 처리 중심 함수 프로그램

정상

문자열 처리, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 4개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

문자열 처리함수조건문
실행 코드 12줄함수 1개반복문 0개조건문 4개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  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))
줄별 상세 설명 보기
코드설명
1def 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)함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
13n, k = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
15print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
230_2.py

문자열 처리 중심 함수 프로그램

정상

문자열 처리, 함수, 조건문 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 5개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

문자열 처리함수조건문
실행 코드 16줄함수 1개반복문 0개조건문 5개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1data = [-1] * 100001오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
2def 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]함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
18n, k = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
20print(f(n))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
230_3.py

문자열 처리 · 조건문 예제

정상

문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

문자열 처리조건문반복문
실행 코드 11줄함수 0개반복문 1개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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])
줄별 상세 설명 보기
코드설명
1data = [-1] * 100001오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3n, k = map(int, input().split())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
5data[1] = 1오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6data[2] = 2 오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7data[3] = 4오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
9for 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]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
15print(data[n])계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
233_1.py

문자열 처리 · 조건문 예제

정상

문자열 처리, 조건문, 반복문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

문자열 처리조건문반복문
실행 코드 10줄함수 0개반복문 2개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 문자열 처리, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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)
줄별 상세 설명 보기
코드설명
1n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
2arr = list(map(int,input().split()))사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
4cnt1 = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
5cnt2 = 0오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
7for i in range(n):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
8 for j in range(i+1, n):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
9 if arr[i] > arr[j]:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
10 cnt1 += 1기존 변수 값에 새 값을 더해 누적합니다.
11 cnt2 += 1기존 변수 값에 새 값을 더해 누적합니다.
13print(cnt1, cnt2)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
233_2.py

문자열 처리 중심 함수 프로그램

정상

문자열 처리, 함수, 조건문 개념을 중심으로, 함수 f, g을(를) 정의하고 반복 구조 5개를 사용하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

문자열 처리함수조건문반복문
실행 코드 26줄함수 2개반복문 5개조건문 3개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  4. while 반복문으로 조건이 만족되는 동안 처리를 계속합니다.
  5. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  6. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 문자열 처리, 함수, 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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()
줄별 상세 설명 보기
코드설명
1n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
2B = list(map(int, input().split()))사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
4def 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=" ")계산 결과나 진행 상태를 화면에 출력합니다.
20def 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=" ")계산 결과나 진행 상태를 화면에 출력합니다.
28f()앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
29print()계산 결과나 진행 상태를 화면에 출력합니다.
30g()앞선 자료를 이용해 프로그램의 처리 과정을 이어 가는 실행문입니다.
주의·개선 포인트
  • 나눗셈의 분모가 0이 되는 입력이 가능한지 확인해야 합니다.
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
234.py

조건문 · 반복문 예제

정상

조건문, 반복문 개념을 중심으로, 반복 구조 1개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

조건문반복문
실행 코드 7줄함수 0개반복문 1개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 조건문, 반복문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
a = int(input())
for i in range(1, a):
  print(2 - (i % 2), end='')

if a % 2:
  print(3)
else:
  print(2)
줄별 상세 설명 보기
코드설명
1a = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
2for i in range(1, a):정해진 범위나 자료의 각 원소를 차례로 순회하는 반복문입니다.
3 print(2 - (i % 2), end='')계산 결과나 진행 상태를 화면에 출력합니다.
5if a % 2:조건식이 참인지 검사하고, 참일 때 들여쓴 코드를 실행합니다.
6 print(3)계산 결과나 진행 상태를 화면에 출력합니다.
7else:앞의 모든 조건이 거짓일 때 실행할 대체 경로입니다.
8 print(2)계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
235_1.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 문자열 처리, 함수 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 2개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수문자열 처리함수조건문
실행 코드 9줄함수 1개반복문 0개조건문 2개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 문자열 처리, 함수, 조건문 개념이 서로 어떻게 연결되는지 살펴봅니다. 코드를 직접 실행한 뒤 입력값을 바꾸어 결과의 변화를 비교하면 이해가 깊어집니다.

원본 코드 보기
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))
줄별 상세 설명 보기
코드설명
1def 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))함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
8n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
9ni = list(map(int, input().split()))사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
10print(f(0, 0))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
235_2.py

재귀 함수 중심 함수 프로그램

정상

재귀 함수, 2차원 리스트, 문자열 처리 개념을 중심으로, 함수 f을(를) 정의하고 조건 분기 3개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

재귀 함수2차원 리스트문자열 처리함수조건문
실행 코드 13줄함수 1개반복문 0개조건문 3개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. 반복해서 사용할 핵심 기능을 함수로 분리합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 재귀 함수, 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))
줄별 상세 설명 보기
코드설명
1data = [[0 for i in range(4)]for i in range(110)]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
3def 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]함수 실행 결과를 호출한 위치로 돌려주고 함수를 종료합니다.
14n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
15coin = list(map(int, input().split()))사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
16print(f(0, 0))계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로
235_3.py

2차원 리스트 · 문자열 처리 예제

정상

2차원 리스트, 문자열 처리, 조건문 개념을 중심으로, 반복 구조 2개를 사용하고 조건 분기 1개로 상황을 판정하는 프로그램입니다. 입력값이 어떤 순서로 처리되어 결과로 이어지는지 코드 구조를 따라 살펴볼 수 있습니다.

2차원 리스트문자열 처리조건문반복문
실행 코드 10줄함수 0개반복문 2개조건문 1개

실행 흐름

  1. 필요한 값을 입력받아 정수·실수·문자열 또는 리스트 형태로 변환합니다.
  2. for 반복문으로 자료나 범위를 순서대로 탐색합니다.
  3. 조건문으로 입력 상태나 계산 결과에 따라 실행 경로를 나눕니다.
  4. 최종 결과 또는 중간 상태를 화면에 출력합니다.

학습 포인트

이 예제에서는 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])
줄별 상세 설명 보기
코드설명
1n = int(input())사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
2coin = list(map(int, input().split()))사용자로부터 값을 입력받습니다. 필요에 따라 split, map, 자료형 변환을 함께 적용합니다.
4data = [[0 for i in range(4)] for j in range(n+1)]오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
6for 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])오른쪽 식을 계산한 뒤 그 결과를 왼쪽 변수나 자료구조에 저장합니다.
13print(data[0][0])계산 결과나 진행 상태를 화면에 출력합니다.
주의·개선 포인트
  • 입력 형식과 값의 범위를 문제 조건에 맞게 제한하면 실행 오류를 줄일 수 있습니다.
맨 위로