diff --git a/README.md b/README.md
index e117cba0d5d1f029a970f9d0da785c207b01ce3f..771b35be502172784258d8dd96952550232b57c7 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,120 @@
 # battle_c
 
 
+## BeumSoo Heo - Team 2
+
+실전코딩2 실습
+
+
 ## My Printf HW
 
-use fprintf with stderr stdout stdin
+use fprintf with stderr stdout stdin & Redirection
 
-### BeumSoo Heo - Team 2
+### Redirection을 통한 파일 입출력
 
-실전코딩2 실습
+<p>
+일반적으로 command로 실행되는 process는 표준 입력 스트림(standard input stream), 표준 출력 스트림(standard output stream)과 오류 출력 스트림(standard error stream)
+을 가지고 있다. 기본적으로 이 모든 스트림은 일반적인 문자열로 콘솔(console)에 출력한다.
+그런데 우리는 프로그램의 실행 결과나 에러를 console이 아닌 file에 저장하고 싶다. 이때 Redirection이 등장한다.
+Redirection은 표준 스트림(standard stream)의 흐름을 file로 바꿔준다. 즉, 입출력을 file로도 가능하게 된다는 것이다.
+</p>
+#### 1. cat > input_data
+<br>
+
+![image](/uploads/0ca38830410e74e30966b4bee39fc240/image.png)
+<br><br>
+
+cat : stdin으로부터 받은 내용을 stdout으로 보낸다.<br><br>
+
+cat > input_data : stdin으로 부터 입력받은 내용을 input_data(file)로 Redirect 한다. <br><br>
+
+
+<br>
+![image](/uploads/7f8d5fdeeb738d3da14653d74e900cb9/image.png)
+<br><br>
+
+따라서 입력한 200은 input_data에 저장된다. <br><br>
+
+
+#### 2. ./a.exe < input_data
+<br>
+<br>
+![image](/uploads/b595b2ee1ad5479a15d7d7475ec19dde/image.png)
+<br><br>
+
+./a > input_data : 실행시 표준 입력을 기다리는 a.exe에 input_data를 Redirect한다.<br><br>
+
+따라서 a.exe에 200이 stdin으로 들어가서, a.exe는 조건문의 결과로 Hello World를 stdout인 Terminal 보낸다.  <br><br>
+
+
+#### 3. ./a.exe < input_data > output_data
+
+그런데 여기서 더하여, 출력된 결과를 Redirection을 통해 파일로 보낼 수 있다. <br><br>
+<br>
+![image](/uploads/6e392d7e36e913ae482ef2b76bf94979/image.png)
+<br>
+
+./a > input_data에서 stdout으로 나올 것을 output_file로 Redirection한 것이다. <br><br>
+<br>
+![image](/uploads/004854462113cf9899530fea83d67328/image.png)
+<br><br>
+cat을 통해 확인할  수 있듯이, output_data에는 ./a > input_data의 결과인 Hello World가 저장되어있다.<br><br>
+
+
+#### 4. ./a < input_data > output_data
+<br>
+<br>
+![image](/uploads/0ca38830410e74e30966b4bee39fc240/image.png)
+<br>
+
+cat : stdin으로부터 받은 내용을 stdout으로 보냄.<br><br>
+
+cat > file_name : stdin으로 부터 입력받은 내용을 file로 Redirect 한다. <br><br>
+
+따라서 입력한 200은 input_data에 저장된다. <br><br>
+
+이번에는 input_data에 저장되있던 200을 -200으로 변경해보자. <br><br>
+
+동일하게 ./a < input_data > output_data 를 실행하면, <br><br>
+
+![image](/uploads/2f4dd75f3b84f42aed6751eadcdfbc97/image.png)<br><br>
+
+stdout이 아닌 stderr로 출력되기 때문에, output_data로의 Redirection이 성공적으로 이루어지지 않았다.<br><br>
+
+그렇다면 stderr로 Redirection 하기 위해서는 어떻게 해야할까? <br><br>
+
+![image](/uploads/5978b464915129acb26dc34f6ba9f971/image.png)<br><br>
+
+위와 같이 출력의 방향을 > 대신에 <strong>"&>"</strong>을 써주면 된다.<br><br>
+
+![image](/uploads/c7e8dedd1c68f454de2b54b168bbcc25/image.png)<br><br>
+
+stderr의 file로의 Redirection이 성공적으로 이뤄졌다.
+
+#### 5. ./a 1> stdout.txt 2> stderr.txt
+
+마지막으로, stdout과 stderr를 각각 다른 파일로 Redirection하여 저장할 수도 있다! <br><br>
+
+![image](/uploads/a0cea86057bd2311f0131af43d964ebb/image.png)<br><br>
+
+여기서 1, 2는 file Descriptor이며 stdin은 0, stdout은 1, stderr는 2로 정해져 있다.<br><br>
+
+따라서 말 그대로 해석하면, ./a command의 결과중 stdout은 stdout.txt로, stderr는 stderr.txt에 각각 Redirect한 것이다.<br><br>
+
+![image](/uploads/7874eb2e531ab150445e70d313b7801d/image.png)<br><br>
+
+위 결과를 통해 stdout은 stdout.txt로, stderr는 stderr.txt에 각각 Redirect된 것을 확인할 수 있다.
+
+
+#### 6. Personal Project 1
+<br><br>
+![image](/uploads/07bbf42c25d7b5d4b2bee41945f7f2d2/image.png)<br><br>
+
+%(+ or -)(자연수)d <br><br>
+
+%-10d으로 입력하면 정수 출력에 총 10칸을 쓰고, 왼쪽 정렬을 하여 정수를 출력한다. <br><br>
+
+% ~ d 사이에 숫자는 출력에 차지할 칸 수를 결정하고 + 혹은 아무것도 쓰지 않는다면 오른쪽 정렬, -를 쓰면 왼쪽 정렬을 해서 출력한다.<br><br>
 
 ## Personal Project 2