정처기 감자정처기 감자
Python함수/클래스

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

Python 기본 제공 함수

코딩Python
읽는데 22분 소요
처음 쓰인 날: 2026-04-10
마지막 수정일: 2026-09-29
조회수: —
선수학습(2개)
  • Python 자료형(int, float, str, tuple)
  • 함수의 기초

요약

Python 기본 제공 함수 range, len, type, sum, sorted, enumerate, map, all, any를 한 페이지에 정리합니다. 각 함수의 기본 사용법, 예시 코드, 시험 주의 포인트까지 정보처리기사 실기에 필요한 내장 함수를 모아 다룹니다.

기본 제공 함수 핵심 정리

함수설명예시
range(끝)0부터 끝-1까지 정수(소수점 없는 숫자) 범위 생성range(5) → 0, 1, 2, 3, 4
len(x)요소 개수(길이) 반환len([1, 2, 3]) → 3
type(x)자료형 반환type(100) → <class 'int'>
sum(x)숫자 요소의 합 반환sum([1, 2, 3]) → 6
enumerate(x)인덱스와 값을 동시에 반환enumerate(["a", "b"]) → (0, "a"), (1, "b")
map(함수, x)각 요소에 함수를 적용한 결과 반환map(int, ["1", "2"]) → 1, 2
sorted(x)정렬된 새 리스트 반환 (원본 유지)sorted([3,1,2]) → [1, 2, 3]
all(x)모든 요소가 참이면 Trueall([True, True]) → True
any(x)하나라도 참이면 Trueany([False, True]) → True

range() — 정수 범위 생성

range()는 정수 범위를 생성하는 함수입니다. for문(같은 동작을 여러 번 반복하는 구문)과 함께 가장 많이 사용됩니다.

사용법 세 가지

python
코드 하이라이팅 중…
range(5), range(2, 6), range(0, 10, 3)이 만드는 정수를 0부터 10까지의 수직선에 표시하고 끝 값을 X로 제외한 다이어그램
노란 칸이 range()가 만드는 정수입니다. 끝 값 5, 6, 10은 X 표시처럼 포함되지 않고, 간격 3을 주면 0부터 3씩 건너뜁니다

기본 사용

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

for i in range(5):는 변수 i에 0, 1, 2, 3, 4를 차례로 넣으면서 아래 들여쓴 코드를 5번 반복 실행합니다. end=" "는 print()가 기본적으로 출력 후 줄을 바꾸는 것을 막고, 줄바꿈 대신 공백을 넣어서 옆으로 이어서 출력합니다.

range(5)는 for문이 반복할 때 0, 1, 2, 3, 4를 차례대로 하나씩 꺼내 쓸 수 있게 준비합니다. 5는 포함되지 않습니다.

시작과 끝 지정

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

간격 지정

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

range()와 C/Java 대응

C/Java를 배운 적이 있다면 참고하세요.

range 표현생성되는 값C/Java 대응
range(5)0, 1, 2, 3, 4for(i=0; i<5; i++)
range(2, 6)2, 3, 4, 5for(i=2; i<6; i++)
range(0, 10, 3)0, 3, 6, 9for(i=0; i<10; i+=3)

역순 범위

간격에 음수를 넣으면 큰 수에서 작은 수로 내려갑니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

range(5, 0, -1)은 5부터 시작해서 1씩 줄이며, 0 직전에서 멈춥니다. 0은 포함되지 않습니다.

list(range(...)) — 리스트로 변환

range()는 리스트와 달리 값을 메모리에 미리 모두 만들어 두지 않습니다. 시작·끝·간격 정보만 보관하고 있다가, 꺼내 달라고 할 때마다 계산해서 하나씩 넘겨주는 range 객체1를 돌려줍니다. 그래서 그대로 print()하면 값 목록 대신 range(0, 10) 처럼 범위 정보가 출력됩니다. 출력에 0이 포함된 이유는 생략한 시작값 기본값이 0이기 때문입니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…
range(10)을 list()로 변환하는 과정을 보여주는 다이어그램
range 객체는 시작·끝·간격 규칙만 저장. list()로 감싸면 그 규칙대로 값을 모두 만들어 펼친 리스트를 돌려줍니다.

list()로 감싸면 range가 계산을 모두 완료하여 값을 메모리에 담은 리스트를 만들어 줍니다.

리스트 변환이 필요한 경우:

  • print()로 값 목록을 확인할 때
  • lst[2] 처럼 인덱스로 특정 위치 값을 꺼낼 때 — range 객체도 인덱스 접근은 가능하지만, 리스트로 변환 후 사용하는 것이 일반적
  • lst[1:4] 처럼 슬라이싱으로 구간을 잘라낼 때 — range 객체도 슬라이싱은 되지만 결과가 다시 range 객체라, 잘라낸 값을 바로 다루려면 리스트로 변환
  • .append(), .reverse() 같은 리스트 전용 메서드를 쓸 때

인덱스는 리스트[위치번호] 형태로 특정 자리의 값을 꺼내는 방법입니다. lst[0]은 첫 번째 값, lst[-1]은 마지막 값입니다.

슬라이싱은 [시작:끝:간격] 형태로 구간을 잘라냅니다. lst[1:4]는 인덱스 1 ~ 3을 꺼내고, 간격을 주면 건너뛰며 꺼낼 수 있습니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

lst[::-2]처럼 간격이 음수이면 뒤에서부터 앞 방향으로 간격만큼 건너뛰며 꺼냅니다. range()도 슬라이싱할 수 있지만 결과가 range 객체(range(0, 10, 2)[1:4] → range(2, 8, 2))라, 잘라낸 값을 리스트로 다루려면 list()로 변환합니다.

range()의 끝 값은 포함되지 않습니다
range(5)는 0부터 4까지 생성합니다. 5는 포함되지 않습니다. C/Java의 for(i=0; i<5; i++)에서 i<5와 같은 원리입니다. 시험에서 범위 끝을 포함하는지 여부를 정확히 따져야 합니다.

len() — 길이와 개수

len()은 여러 값을 담는 자료형의 요소 개수를 반환합니다. 문자열·리스트 같은 시퀀스2, 딕셔너리, 집합처럼 값을 여럿 담는 자료형을 통틀어 컬렉션이라고 부르고, 시퀀스는 그중 순서가 있는 한 종류입니다.

python
코드 하이라이팅 중…
len() 함수가 문자열 hello의 문자 5개, 리스트 [1, 2, 3]의 요소 3개, 튜플 (100, 200)의 요소 2개, 딕셔너리 {'a': 1, 'b': 2}의 키-값 쌍 2개를 하나씩 세어 5, 3, 2, 2를 돌려주는 모습
len()은 자료 안에 들어 있는 것의 개수를 셉니다. 문자열은 문자 수, 리스트와 튜플은 요소 수, 딕셔너리는 키-값 쌍의 수를 돌려줍니다
출력
코드 하이라이팅 중…

문자열에서의 len()

문자열의 len()은 문자 수를 셉니다. 공백, 점, 특수 기호도 한 글자로 셉니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

range()와 함께 쓰기

len()은 리스트의 길이만큼 반복할 때 range()와 함께 자주 쓰입니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…
공백도 한 글자입니다
len('a b')는 3입니다. 공백도 문자 하나로 세기 때문입니다. 문자열 안의 공백, 점(.), 특수 기호 모두 len() 결과에 포함됩니다.

type() — 자료형 확인

type(x)는 x가 어떤 자료형(데이터 타입)인지를 알려줍니다.

python
코드 하이라이팅 중…
100, 100.0, 따옴표로 감싼 100, 튜플 (1, 2), 리스트 [1, 2]에 각각 type()을 적용하면 int, float, str, tuple, list 자료형 이름이 나오는 5열 다이어그램
생김새가 비슷한 100, 100.0, 따옴표로 감싼 100도 type()으로 확인하면 int, float, str로 자료형이 모두 다르고, print()로 출력하면 <class '자료형 이름'> 형태로 나옵니다
출력
코드 하이라이팅 중…

자료형 비교

type()의 반환값끼리 ==로 비교하면 같은 자료형인지 확인할 수 있습니다.

type(42)는 <class 'int'>이고, type(100)도 <class 'int'>입니다. 두 값이 같으므로 == 비교 결과는 True입니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

조건문에서 자료형 판별

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…
type() 비교는 같은 형태를 맞춰야 합니다
정보처리기사 기출에서는 type(value) == type(100)과 같이 type() 반환값을 직접 비교하는 방식이 출제됩니다. type(100)은 int 클래스 자체를 가리키므로, 같은 자료형이면 True를 반환합니다.

sum() — 합계

sum(x)는 리스트나 튜플 같은 이터러블에 들어 있는 숫자 요소의 합을 반환합니다. 문자열·리스트·튜플 같은 시퀀스도, 딕셔너리·집합도 모두 여러 값을 담는 컬렉션이라 이터러블에 속합니다.

python
코드 하이라이팅 중…
sum()이 리스트 1, 2, 3, 4, 5와 튜플 10, 20, 30의 요소를 하나씩 꺼내 더해 각각 15와 60을 돌려주는 과정
sum()은 리스트든 튜플이든 요소를 하나씩 꺼내 모두 더한 값을 돌려줍니다
출력
코드 하이라이팅 중…

평균 계산 패턴

sum()과 len()을 함께 사용하면 평균을 한 줄로 구할 수 있습니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

제너레이터 표현식과 함께 쓰기

sum() 안에 제너레이터 표현식을 넣으면 조건에 맞는 값만 골라서 더할 수 있습니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

%는 나머지 연산자입니다. x % 2 == 0은 "x를 2로 나눈 나머지가 0이다", 즉 짝수인지 확인하는 조건입니다. for x in nums if x % 2 == 0은 nums의 요소를 하나씩 꺼내 짝수인 것만 골라내고, sum()이 그 값들을 더합니다. nums에서 짝수는 2와 4이므로 결과는 6입니다.

sum()은 숫자 요소만 더할 수 있습니다
sum()의 인자로 들어가는 리스트는 모든 요소가 숫자(int 또는 float)여야 합니다. 문자열이 섞여 있으면 TypeError가 발생합니다.

enumerate() — 인덱스와 값 동시 반환

enumerate()는 리스트를 for문으로 순회할 때 인덱스와 값을 동시에 돌려주는 함수입니다.

기본 사용법

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

enumerate(fruits)는 매 회차 (인덱스, 값) 형태의 튜플(소괄호로 묶은 값 묶음)을 만들고, i, v 두 변수가 그 튜플을 언패킹(묶음에서 값을 하나씩 꺼내 각 변수에 넣는 것)해서 받습니다. 변수를 두 개 쓰는 이유는 enumerate()가 인덱스와 값을 쌍으로 돌려주기 때문입니다.

enumerate(fruits) 동작 과정 — 각 요소에 인덱스를 붙여 (인덱스, 값) 튜플을 만들고 i, v로 언패킹
enumerate()가 매 회차 (인덱스, 값) 튜플을 만들고, i와 v 두 변수로 풀어 넣는 과정

enumerate 없이 같은 동작 구현

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

range(len(fruits))로 인덱스를 만들고 fruits[i]로 값을 꺼내는 방식입니다. enumerate()를 쓰면 이 과정을 한 줄로 줄일 수 있습니다.

start 매개변수

기본 인덱스는 0부터 시작하지만, start 매개변수(함수에 넘겨주는 설정값)로 시작 번호를 바꿀 수 있습니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…
enumerate()는 리스트 자체를 바꾸지 않습니다
enumerate()는 인덱스를 붙여서 돌려줄 뿐, 원본 리스트를 수정하지 않습니다. 결과는 enumerate 객체이며, for문으로 순회하거나 list()로 변환해서 사용합니다.

sorted() 함수

sorted(이터러블)은 이터러블의 요소를 정렬한 새 리스트를 반환합니다. 원본 데이터는 변경하지 않습니다.

python
코드 하이라이팅 중…
nums 리스트 [3, 1, 4, 1, 5]에 sorted(nums)를 적용해 작은 수부터 정렬한 새 리스트 result [1, 1, 3, 4, 5]가 만들어지고, 원본 nums는 그대로 남는 과정
sorted()는 정렬한 새 리스트를 돌려주고, 원본 nums는 바뀌지 않습니다
출력
코드 하이라이팅 중…

리스트·집합·문자열 모두 사용 가능

sorted()는 어떤 이터러블에도 쓸 수 있으며, 항상 리스트를 반환합니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

reverse 매개변수 — 내림차순

reverse=True를 넣으면 큰 값에서 작은 값 순으로 정렬합니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…
sorted()는 새 리스트 반환, list.sort()는 원본 수정
sorted(x)는 원본 x를 그대로 두고 정렬된 새 리스트를 반환합니다. 반면 x.sort()는 x 자체를 정렬하고 None을 반환합니다. 값을 보존해야 할 때는 sorted()를 사용하세요.

key=lambda — 정렬 기준 바꾸기

sorted()의 key 매개변수에는 함수를 넣습니다. 그 함수가 돌려주는 값을 기준으로 정렬이 수행됩니다. 한 번 쓰고 버릴 함수라면 람다 표현식을 바로 전달하는 것이 관례입니다.

람다의 일반 형태는 다음과 같습니다 — 이름 없는 함수를 한 줄로 만든 것입니다.

python
코드 하이라이팅 중…

튜플 리스트를 두 번째 원소로 정렬

python
코드 하이라이팅 중…
sorted(data, key=lambda x: x[1])가 각 튜플에서 x[1]을 key 값으로 뽑아 70, 85, 90 순으로 원래 튜플 전체를 정렬하는 3단계 흐름
key 함수가 돌려준 점수로 순서를 정하고, 결과 리스트에는 원래 튜플이 그대로 들어갑니다
출력
코드 하이라이팅 중…

lambda x: x[1]은 "튜플 x가 들어오면 x[1]을 돌려주는 함수"입니다. x[1]은 튜플의 두 번째 원소를 꺼내는 튜플 인덱싱으로, 인덱스는 0부터 세므로 ("A", 90)[1]은 90입니다. sorted가 각 튜플마다 이 함수를 호출해 반환값(점수)으로 순서를 매깁니다.

문자열 길이로 정렬

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

딕셔너리를 값 기준으로 정렬 — items()와 결합

딕셔너리는 items()로 (키, 값) 튜플 묶음을 꺼낼 수 있습니다. 여기에 sorted(... key=lambda x: x[1])을 결합하면 값을 기준으로 정렬된 (키, 값) 리스트를 얻습니다. 각 튜플에서 x[0]은 키, x[1]은 값입니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

빈도 카운팅(dict.get 패턴)으로 만든 딕셔너리를 값 기준으로 정렬하면 최빈값(가장 많이 등장한 값)을 바로 뽑을 수 있습니다.

python
코드 하이라이팅 중…
빈도 딕셔너리 freq를 items()로 (키, 값) 튜플로 꺼낸 뒤 값 기준 내림차순으로 정렬하고 [0]으로 ('a', 3)을 꺼내는 과정
items()로 꺼낸 쌍을 x[1] 기준으로 큰 순서대로 정렬하면 맨 앞 [0]이 최빈값 ('a', 3)이 됩니다
출력
코드 하이라이팅 중…
데이터 형태대표 패턴결과
튜플 리스트sorted(data, key=lambda x: x[1])두 번째 원소로 정렬
문자열 리스트sorted(words, key=lambda s: len(s))길이로 정렬
딕셔너리sorted(d.items(), key=lambda x: x[1])값 기준 정렬
key에 넘기는 것은 '함수'이지 '값'이 아닙니다
key=x[1]처럼 값을 넘기면 오류가 납니다. key=lambda x: x[1]처럼 함수를 넘겨야 합니다. sorted는 각 요소마다 이 함수를 호출해 얻은 반환값으로 순서를 매깁니다.

map() — 함수를 각 요소에 적용

map(함수, 이터러블)은 이터러블의 각 요소를 함수에 하나씩 넣어 호출하고, 그 결과를 하나씩 순서대로 꺼낼 수 있도록 저장해 둔 map 객체를 돌려줍니다. map 객체는 리스트와 달리 값을 미리 모두 만들어 두지 않고, 꺼낼 때마다 계산합니다. int는 정수 자료형이면서 동시에 값을 정수로 변환하는 함수로도 쓰입니다.

기본 사용법

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

위 코드에서 map(int, nums)는 nums의 각 요소("1", "2", "3")를 int() 함수에 넣어 int("1") → 1, int("2") → 2, int("3") → 3으로 변환합니다.

map(int, nums) 동작 과정 — 각 요소를 int() 함수에 통과시켜 변환
map()은 리스트의 각 요소를 하나씩 함수에 통과시켜 결과를 만든다

map 객체는 list()로 변환해야 합니다

map()은 리스트가 아니라 map 객체를 반환합니다. map 객체는 아직 계산이 완료된 리스트가 아니기 때문에, 그대로 print()하면 값 대신 <map object at 0x...> 처럼 Python 내부 메모리 위치가 출력됩니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

map 객체는 한 번만 꺼낼 수 있습니다

map 객체는 값을 미리 담아 두지 않고 꺼낼 때마다 하나씩 계산해서 내놓기 때문에, 리스트와 달리 한 번 끝까지 꺼내면 비어 버립니다. 어디까지 꺼냈는지 기억하면서 값을 내놓는 방식이라, 이미 꺼낸 값을 되돌려 주지 않습니다3.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

제너레이터도 같은 성질이 있습니다.

map 객체를 변수에 담아 두 번 쓰면 두 번째는 비어 있습니다
같은 결과를 여러 번 써야 한다면 처음에 list(map(...))처럼 리스트로 바꿔 두세요. 코드 추적 문제에서 두 번째 출력이 []가 되는지 꼭 확인합니다.

map()의 동작을 for문으로 풀어 쓰기

python
코드 하이라이팅 중…

lambda와 함께 쓰기

기본 제공 함수 대신 직접 만든 동작을 적용하려면 lambda 표현식(이름을 따로 짓지 않고 한 줄로 쓰는 간단한 함수)과 함께 씁니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

lambda x: x + 100은 "x를 받아 x + 100을 돌려주는 이름 없는 함수"입니다. map()이 리스트의 각 요소를 이 함수에 넣어 결과를 모읍니다.

map()의 결과는 list()로 감싸야 합니다
map()은 map 객체를 반환합니다. print(map(...))은 주소만 출력됩니다. 리스트로 사용하려면 list(map(...))으로 감싸야 합니다.

all()과 any()

all()과 any()는 이터러블의 요소를 앞에서부터 하나씩 확인해, 최종 결과를 True 또는 False 하나로 돌려주는 함수입니다.

all([True, False, True])는 [1]의 False를 만나 False를 돌려주고, any([False, False, True])는 [2]의 True를 만나 True를 돌려주는 과정을 위아래로 비교한 그림
all()은 False를 하나라도 만나면 False, any()는 True를 하나라도 만나면 True입니다

all() — 모두 참이면 True

Python에서 숫자 0은 False로, 0이 아닌 숫자는 True로 취급합니다. 이 규칙이 all()과 any()에도 그대로 적용됩니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

any() — 하나라도 참이면 True

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

all()과 any() 비교

함수조건빈 리스트일 때
all(x)모든 요소가 참이면 TrueTrue
any(x)하나라도 참이면 TrueFalse
python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

제너레이터 표현식과 함께 쓰기

all()과 any() 안에 제너레이터 표현식을 넣으면 조건 판별을 한 줄로 작성할 수 있습니다.

python
코드 하이라이팅 중…
출력
코드 하이라이팅 중…

x % 2 == 0 for x in nums는 nums의 각 요소에 대해 x % 2 == 0(짝수인지)을 검사합니다. 예를 들어 [2, 4, 6, 8]에서는 [2%2==0, 4%2==0, 6%2==0, 8%2==0] → [True, True, True, True]가 되고, all()이 이 결과를 받아 전부 True이므로 True를 반환합니다.

빈 리스트에서 all()은 True, any()는 False입니다
all([])이 True인 이유: all()은 '거짓인 요소가 하나라도 있으면 False'를 반환합니다. 빈 리스트에는 요소가 아예 없으므로 거짓인 요소도 없습니다. 거짓인 것이 없으니 True입니다. 반대로 any([])는 '참인 요소가 하나라도 있으면 True'인데, 빈 리스트에는 참인 요소도 없으므로 False입니다. 직관과 다를 수 있으니 주의하세요.

정보처리기사 실기 대비 문제

문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.

Footnotes

  1. 객체(object)는 값과 동작을 함께 가진 데이터 덩어리입니다. range 객체는 시작·끝·간격 값을 저장하고 있으며, for문이나 list()가 요청할 때마다 다음 정수를 계산해서 넘겨줍니다. ↩

  2. 시퀀스(sequence)는 여러 값을 순서대로 묶어 저장하는 자료형입니다. 문자열, 리스트, 튜플이 대표적입니다. ↩

  3. 이렇게 값을 하나씩 내놓으면서 어디까지 꺼냈는지 기억하는 대상을 이터레이터(iterator)라고 합니다. map 객체와 제너레이터가 이터레이터입니다. ↩


메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
후수학습(2개)
  • Python 제너레이터 표현식
  • 람다 표현식 (Lambda Expression)
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999