diff --git a/HW2_three files/Makefile b/HW2_three files/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..a0c300fedde3af4898833867c2df51b8ff94bbf2
--- /dev/null
+++ b/HW2_three files/Makefile	
@@ -0,0 +1,14 @@
+SRCS := main.c func.c
+OBJS := $(SRCS:.c=.o)
+CC := gcc
+CFLAGS := -c -Wall
+
+main : $(OBJS)
+        $(CC) -o $@ $^
+
+clean :
+        -rm $(OBJS)
+        rm main
+
+dep :
+        gccmakedep $(SRCS)
diff --git a/HW2_three files/README.md b/HW2_three files/README.md
index 3bb4079314139d13154b3ea93578e0d2ac491feb..05dab66c3fe8569d44fd56109b986eb700df5147 100644
--- a/HW2_three files/README.md	
+++ b/HW2_three files/README.md	
@@ -21,4 +21,52 @@
 - #ifdef, #else, #endif
     - func.c에서 int func_name_or_id() 구현 (no using #define PRINT_ID)
     - difference between gcc -DPRINT_ID main.c func.c and gcc main.c func.c
-    - gcc -DPRINT_ID는 PRINT_ID가 정의된 상태로 컴파일 되므로 #ifdef 실행
\ No newline at end of file
+    - gcc -DPRINT_ID는 PRINT_ID가 정의된 상태로 컴파일 되므로 #ifdef 실행
+
+## 이론
+- maintain, update, and regenerate group of programs
+- 많은 프로그램 모듈들로 구성된 대규모 프로그램을 효율적으로 유지하고, 일관성 있게 관리 하도록 도와주는 도구
+- Target으로부터 dependency 판단하여 오브젝트파일 생성, 라이브러리 생성, 오브젝트 파일로부터 실행파일 생성
+
+- 장점
+    - 각 파일에 대한 반복적 명령의 자동화로 인한 시간 절약
+    - 프로그램의 종속 구조를 빠르게 파악할 수 이쓰며 관리 용이
+    - 단순 반복 작업 및 재작성을 최소화
+
+## 구성
+- 목적파일(Target): -c 명령어를 수행하여 결과로 출력된 파일
+- 의존파일(Dependency): 목적파일을 만드는데 필요한 파일
+- 명령어: 필요한 명령어들
+- 매크로: 코드 단순화를 위한 작업
+- ![1](./image/1.PNG)
+
+## 매크로
+- $@: 현재의 Target 파일명
+- $?: 현재의 Target보다 더 최근에 갱신된 의존 파일 명단
+- $*: 현재의 Target보다 더 최근에 갱신된 현재 의존 파일 명단
+- $<: Dependency 파일 중 첫번째 파일명
+- $^: 현재 모든 Dependency 파일들의 명단
+- CC: Program for compiling C programs; default 'cc'
+- CFLAGS: cc 명령어의 옵션설정
+
+## test.c Makefile
+- SRCS := test.c func.c
+    - SRCS = test.c func.c
+- OBJS := $(SRCS:.c=.o)
+    - .c파일 -> .o파일
+- CC := gcc
+    - CC 매크로를 gcc로 설정
+- CFLAGS := -c -Wall
+    - 모든 c파일들을 warning 포함해서 컴파일
+- main : $(OBJS)
+    - main 이라는 이름으로 OBJS파일들 컴파일 하여 출력
+- $(CC) -o $@ $^ -lm
+    - test로 dependency파일들 모두 컴파일 하여 출력
+- clean :
+	- rm $(OBJS)
+        - OBJS를 통해 만든 모든 .O 파일 삭제
+	- rm main
+        - main 파일 삭제
+- dep :
+	- gccmakedep $(SRCS)
+        - SRCS 관련된 dependency 파일 모두 검색
diff --git a/HW2_three files/image/1.PNG b/HW2_three files/image/1.PNG
new file mode 100644
index 0000000000000000000000000000000000000000..b8fb85825cabf20528db2f8aa3d252b83be448c4
Binary files /dev/null and b/HW2_three files/image/1.PNG differ
diff --git a/README.md b/README.md
index 3df0adca5385c635bd50b310b1b6ecebffeefbd1..f27123ee75cd32477c74a43242cae31f0137b734 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,16 @@
-# battle_c
+# 실전코딩 HW1
 
-## Sangkyeong Lee - Team 4
+# rediretion
+- 프로그램 결과 혹은 출력을 파일이나 다른 스트림으로 전달할때 사용
+    - 사용법: > ("전달 받을 파일")
+    - ![1](./image/1.PNG)
 
-실전코딩2 실습
-
-## printf
-
-### stdio.h
+# stdio.h
+## stdin
+- 
+## sdterr 
+- 
+## stdout
+-  
 
 redirection stderr, stdout, stdin에 대해서 배웠음
\ No newline at end of file
diff --git a/image/1.PNG b/image/1.PNG
new file mode 100644
index 0000000000000000000000000000000000000000..63e1cad4db2b36b84d752d0bba551e47f8f7420a
Binary files /dev/null and b/image/1.PNG differ